ZOJ 4530 Bloodsucker(期望)
以前暑假一次练习赛的题目,当时如此的水题,很茫然啊,现在大体明白求期望都是倒着推的以后,这个题就很简单了。这个题直接算就可以,每一个状态都只能是从上一个状态推出来的,利用组合计算出概率,取倒数就是期望,因为精度WA了一次,好久没有1Y过了。。。
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <map> 5 using namespace std; 6 #define eps 1e-9 7 #define ll __int64 8 int main() 9 { 10 int t,n,i; 11 double p,ans; 12 scanf("%d",&t); 13 while(t--) 14 { 15 ans = 0; 16 scanf("%d%lf",&n,&p); 17 for(i = 1;i <= n-1;i ++) 18 { 19 ans = ans + n*1.0/2.0/i/(n-i)/p*(n-1); 20 } 21 printf("%.3lf\n",ans+eps); 22 } 23 return 0; 24 }