zoukankan      html  css  js  c++  java
  • ZOJ.3551.Bloodsucker(期望DP)

    题目链接

    (Description)
    有1个吸血鬼和n-1个人,每天有且只会有两个人/吸血鬼相遇,如果是人与吸血鬼相遇,那个人会有p的概率变成吸血鬼;否则什么也不发生。求n个都变成吸血鬼的期望天数。

    (Solution)
    我还是写一下吧。。期望题一般倒着递推。
    (f[i])为当前有(i)个吸血鬼,要变成(n)个吸血鬼的期望天数。那么(f[n]=0),答案即(f[1]).
    一天要么变一个要么不变,很好想到:

    [f[i]=p_i(f_{i+1}+1)+(1-p_i)(f_i+1) ]

    [p_i*f[i]=p_i*f[i+1]+1 ]

    [f[i]=frac{1}{p_i}+f[i+1] ]

    而$$p_i=frac{C(i,1)C(n-i,1)}{C(n,2)}p$$
    那么$$f[i]=frac{n(n-1)}{2i(n-i)p}+f[i+1]$$

    #include <cstdio>
    
    int main()
    {
    	int T; scanf("%d",&T);
    	long long n; double p,res;
    	while(T--)
    	{
    		scanf("%lld%lf",&n,&p), res=0;
    		for(int i=n-1; i>=1; --i)
    			res += 1.0*(n*(n-1))/(2.0*i*(n-i)*p);
    		printf("%.3lf
    ",res);
    	}
    	return 0;
    }
    
  • 相关阅读:
    基于php socket(fsockopen)的应用实例分析
    php多线程的问题
    PHP之fsockopen提交POST数据讲解
    Sort List
    Insertion Sort List
    LRU Cache
    Reorder List
    Word Break II
    Word Break
    Copy List with Random Pointer
  • 原文地址:https://www.cnblogs.com/SovietPower/p/8664447.html
Copyright © 2011-2022 走看看