首页 > 其他 > 详细

期望dp入门水平在线爆零)

时间:2019-08-05 15:59:43      阅读:108      评论:0      收藏:0      [点我收藏+]

  水博客使人愉悦(雾)

 


     以下题单来自https://www.cnblogs.com/Morning-Glory/p/11228082.html orzorzorz

    

SP1026 FAVDICE - Favorite Dice

一个n面的骰子,求期望掷几次能使得每一面都被掷到。

比较套路的题 

设现在掷到了i面,掷到新一面的概率(n-i)/n。

没有掷到新一面的概率i/n。

故式子为f[i]=i/nf[i]+(n-i)/nf[i+1]+1(要掷一次)

化简为f[i]=f[i+1]+n/(n-i)

 注意n==1的情况,1/0值在c++中的情况还不太清楚。

不如直接把f[0]设成1输出。

其实式子还是很容易推的,然而太久不推十分不熟练)

技术分享图片
 1 #include<bits/stdc++.h>
 2 #define re register int
 3 #define db double
 4 #define maxn 1000+5
 5 using namespace std;
 6 db f[maxn];
 7 int t,n;
 8 int main()
 9 {
10     cin>>t;
11     while(t--)
12     {
13         cin>>n;
14         if(n==1) f[0]=1;
15         else{
16             f[n]=0;
17             for(re i=n-1;i>=0;i--)
18             f[i]=f[i+1]+(db)n/(db)(n-i);
19         }
20         printf("%.2lf",f[0]);
21             cout<<endl;
22     }
23     return 0;
24 }
View Code

 

 

期望dp入门水平在线爆零)

原文:https://www.cnblogs.com/dgfudmg/p/11303456.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!