概率DP lightoj 1265
题意:
1、两只老虎相遇 就互相残杀
2、老虎与鹿相遇 鹿死
3、老虎与人相遇 人死
4、人与鹿相遇 鹿死
5、鹿与鹿相遇 无果
求人活的概率
解析:如果老虎为0 则人活得概率为1
如果老虎为奇数 因为只有两只老虎相遇的时候 老虎才能死 所以必然是两个两个一起死 所以 最后必然剩一只老虎 所以人死 活得概率为0
如果老虎为偶数 每天不让老虎和人相遇即可 等到所有老虎都相遇 互相残杀之后 人不就是活的了吗 而且鹿的数量 并不能影响人的存活率 因为鹿并不能减少老虎的数量
所以 如果老虎为偶数 则我们把所有老虎都相遇的概率求出来即可
设 老虎 有 x 个
则一对老虎相遇的概率为 C(1,x)/(x+1) * C(1,x-1)/(x)
所有老虎相遇的概率为 C(1,x)/(x+1) * C(1,x-1)/(x) * C(1,x-2)/(x-1) * C(1,x-3)/(x-2) * `````* C(1,2)/3 * C(1,1)/2 化简为 1/(x+1)
1 #include<cstdio> 2 #include<algorithm> 3 #include<string.h> 4 #include<math.h> 5 using namespace std; 6 int main() 7 { 8 int T; 9 scanf("%d",&T); 10 int cnt=0; 11 while(T--){ 12 int t,d; 13 scanf("%d%d",&t,&d); 14 printf("Case %d: ",++cnt); 15 if(t%2) printf("0.000000\n"); 16 else{ 17 printf("%lf\n",1/(double)(t+1)); 18 } 19 } 20 return 0; 21 }