zoj 3351 Bloodsucker

来源:互联网 发布:淘宝信用度查询 编辑:程序博客网 时间:2024/06/05 03:58

zoj 3351 Bloodsucker


概率dp

概率dp,主要是很难想,只要想到思路了,编程复查度都很低

状态dp[i] 表示吸血鬼的数量为i的期望  dp[i] = (dp[i+1] + 1)* p + (dp[i]+1)*(1-p)

p 表示人和吸血贵相遇并且人转化为吸血鬼的概率p = i*(n-i)/C(n,2)*P , 化简之后就简单了,递推即可


#include <cmath>#include <cstdio>#include <cstdlib>#include <iostream>#include <set>#include <algorithm>using namespace std;int main(){    int T,n;    double p;    scanf("%d",&T);    while(T--)    {        scanf("%d %lf",&n,&p);        double pre=0;        for(int i=1;i<n;i++)          pre+=n*1.0*(n-1)/((double)i*(n-i)*p*2.0);        printf("%.3lf\n",pre);    }    return 0;}



原创粉丝点击