最近在复习概率DP求期望,顺便做一下。
分成第二个人选择老虎或者狼的情况。
然后
s1+=q*(p)*(p)*(x+y)+q*p*(1-p)*x+q*(1-p)*p*y;//老虎 且第一个人选择老虎的期望
s1+=(1-q)*x;//老虎 且第一个人选择狼的期望
求一下取大的输出就好。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;
double x,y;
double p,q;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf%lf%lf",&x,&y,&p,&q);//p为第二个人的杀死概率
double s1=0,s2=0;
s1+=q*(p)*(p)*(x+y)+q*p*(1-p)*x+q*(1-p)*p*y;//老虎
s1+=(1-q)*x;
s2+=q*y;//狼
s2+=(1-q)*(p)*(p)*(x+y)+(1-q)*(1-p)*p*y+(1-q)*p*(1-p)*x;
if(s1>s2)
{
printf("tiger %.4f\n",s1);
}
else
{
printf("wolf %.4f\n",s2);
}
}
return 0;
}