stone [期望]

也許更好的閱讀體驗

Description\mathcal{Description}

nn 堆石子,依次編號爲 1,2,,n1, 2,\ldots , n,其中第 ii 堆有 aia_i 顆石子
你每次等概率隨機選擇一顆石子,並取完它所在的那一堆石子
求第 11 堆石子被取走的時間的期望

n105,ai109n\leq 10^5,a_i\leq 10^9

Solution\mathcal{Solution}

這題不是很難,然而並不是考慮DPDP,用的比較巧妙的方法
考慮期望的線性性,設pip_i表示第ii堆石子在第一堆石子前
若第ii堆石子在第11堆石子前被取出來,那麼就會多11次取走操作
換成期望就是E=i=2npi1E=\sum\limits_{i=2}^np_i*1

現在的問題就是求pip_i
考慮第ii堆石子在第11堆石子之前被取走
假設現在有tottot個石子,那麼取走ii的概率是aitot\dfrac{a_i}{tot},取走11的概率是a1tot\dfrac{a_1}{tot}
無論tottot的值是什麼,第ii堆石子比第11堆石子先被取走的概率都是aiai+a1\dfrac{a_i}{a_i+a_1}
於是這道題就解決了

Code\mathcal{Code}

/*******************************
Author:Morning_Glory
LANG:C++
Created Time:2019年11月07日 星期四 20時01分34秒
*******************************/
#include <cstdio>
#include <fstream>
using namespace std;
const int maxn = 100005;
int n,x;
double ans;
int main()
{
	scanf("%d%d",&n,&x);
	for (int i=2;i<=n;++i){
		int p;
		scanf("%d",&p);
		ans+=1.0*p/(x+p);
	}
	ans+=1;
	printf("%.10lf\n",ans);
	return 0;
}

如有哪裏講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章