日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷P4550 收集邮票(概率期望)

發布時間:2025/7/25 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P4550 收集邮票(概率期望) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

?

神仙題啊……這思路到底是怎么來的……

ps:本題是第$k$次買郵票需要$k$元,而不是買的郵票標號為$k$時花費$k$元

我們設$g[i]$表示現在有$i$張,要買到$n$張的期望張數,設$P(x,i)$表示買$x$次能從$i$張買到$n$張的概率,則有$$g[i]=\sum_{x=0}^\infty x\times P(x,i)$$

然后考慮一下遞推關系式,有$$g[i]=g[i+1]+\frac{n}{n-i},g[n]=0$$

于是就可以愉快的遞推了

然后設$f[i][j]$表示現在有$i$張郵票,下一張郵票要花$j$元,買到$n$張的期望花費。不難發現如下的遞推式$$f[i][j]=j+f[i][j+1]\times \frac{i}{n}+f[i+1][j+1]\times \frac{n-i}{i}$$

然而因為$j$可能是無限大,所以我們沒辦法簡單的遞推。

于是換一個角度思考,我們考慮在$f[i][j]$的情況下還需要買幾次才能夠買齊,則有$$f[i][j]=\sum_{x=0}^\infty (j+(j+1)+...+(j+x-1))\times P(x,i)$$

其中$x$表示枚舉次數,小括號里是$x$次購買所需的花費

繼續推$$f[i][j]=\sum_{x=0}^\infty \frac{x(2j+x-1)}{2} \times P(x,i)$$

然后把$j+1$帶進去,可以得出$$f[i][j+1]-f[i][j]=\sum_{x=0}^\infty x\times P(x,i)=g[i]$$

然后再考慮一下原來的遞推公式$$f[i][j]=j+f[i][j+1]\times \frac{i}{n}+f[i+1][j+1]\times \frac{n-i}{i}$$

$$f[i][j]=j+(f[i][j]+g[i])\times \frac{i}{n}+(f[i+1][j]+g[i+1])\times \frac{n-i}{i}$$

然后移項之后可得$$f[i][j]=\frac{(j+g[i]\times \frac{i}{n}+(f[i+1][j]+g[i+1])\times \frac{n-i}{i})\times n}{n-i}$$

然后考慮一下,因為答案是$f[1][0]$,所以所有$j$不等于$0$的情況對我們都沒有用,于是可以把第二維省略,只考慮$j=0$的情況

$$f[i]=\frac{(j+g[i]\times \frac{i}{n}+(f[i+1]+g[i+1])\times \frac{n-i}{i})\times n}{n-i}$$

邊界條件為$f[n]=0$

然后就可以直接遞推了

1 //minamoto 2 #include<cstdio> 3 const int N=10005; 4 double f[N],g[N],m;int n; 5 int main(){ 6 scanf("%d",&n),f[n]=g[n]=0,m=n; 7 for(int i=n-1;i>=0;--i) g[i]=g[i+1]+m/(m-i); 8 for(int i=n-1;i>=0;--i) 9 f[i]=((f[i+1]+g[i+1])*(m-i)/m+g[i]*i/m+1.0)*m/(m-i); 10 printf("%.2lf\n",f[0]); 11 return 0; 12 }

?

轉載于:https://www.cnblogs.com/bztMinamoto/p/9792416.html

總結

以上是生活随笔為你收集整理的洛谷P4550 收集邮票(概率期望)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。