有 堆石子,依次編號爲 ,其中第 堆有 顆石子
你每次等概率隨機選擇一顆石子,並取完它所在的那一堆石子
求第 堆石子被取走的時間的期望
這題不是很難,然而並不是考慮,用的比較巧妙的方法
考慮期望的線性性,設表示第堆石子在第一堆石子前
若第堆石子在第堆石子前被取出來,那麼就會多次取走操作
換成期望就是
現在的問題就是求了
考慮第堆石子在第堆石子之前被取走
假設現在有個石子,那麼取走的概率是,取走的概率是
無論的值是什麼,第堆石子比第堆石子先被取走的概率都是
於是這道題就解決了
/*******************************
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;
}
如有哪裏講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧