HDU 4438 Hunters 概率期望 2012 Asia Tianjin Regional Contest
解题报告:
题目大意:A和B两个人在一片森林里举行一场打猎比赛,他们的目标的只有两种动物,一只老虎和一只狼,规定杀死老虎的得分是X,杀死狼的得分是Y。若两个人同时在追杀一种动物,则A赢的概率为P,B赢的概率为1-P,并且现在A已知B首先选择老虎的概率为Q,选择狼的概率为1-Q,若他们一开始选择的是不同的动物,则两人都能将自己所选的动物杀死,并且得到相应的分数,若两人同时选择同一种动物,则A杀死的概率是P,B杀死的概率是1-P,然后两人又同时去追另一种动物,下同......问题是求出A应该首先选择哪一种动物才能让自己的分数更高。
要求先选择哪一种动物的得分最高,即分别求出先选老虎的和先选狼的得分的期望分别是多少,然后比较哪一种得分的期望更大,则首先选择哪一种动物。
求期望时枚举两种情况,第一种,先选择老虎的,然后分别算出得到X分Y分和X+Y分的概率是多少,再分别用得到的分数的概率分别乘以对应的得到的分数然后将这些分数加起来即为首先选择老虎的得分的期望,先选择狼的情况类似。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<cmath> 3 4 double x,y,p,q,anst,answ; 5 int main() { 6 int T; 7 scanf("%d",&T); 8 while(T--) { 9 scanf("%lf%lf%lf%lf",&x,&y,&p,&q); 10 anst=1.0*(1.0-q)*x+q*p*(1.0-p)*(x+y)+q*p*p*(x+y); 11 answ=1.0*q*y+(1.0-q)*(1.0-p)*p*(x+y)+(1.0-q)*p*p*(x+y); 12 if(anst>answ) 13 printf("tiger %.4lf\n",anst); 14 else 15 printf("wolf %.4lf\n",answ); 16 } 17 return 0; 18 }