首页 > ACM题库 > HDU-杭电 > HDU 4438-Hunters-数学相关-[解题报告]HOJ
2015
07-16

HDU 4438-Hunters-数学相关-[解题报告]HOJ

Hunters

问题描述 :

Alice and Bob are the topmost hunters in the forest, so no preys can escape from them. However, they both think that its hunting skill is better than the other. So they need a match.
In their match, the targets are two animals, a tiger and a wolf. They both know that the tiger is living in the south of the forest and the wolf is living in the north of the forest. They decide that the one who kills the tiger scores X points and who kills the wolf scores Y points. If the one who kills both tiger and wolf scores X+Y points.
Before the match starts, Alice is in the east of the forest and Bob is in the west of the forest. When the match starts, Alice and Bob will choose one of the preys as targets. Because they haven’t known the other’s choice, maybe they choose the same target. There will be two situations:
(1) If they choose different targets, they both are sure of killing their respective targets.
(2) If they choose the same target, the probability of Alice killing the target is P, and the probability of Bob killing it is 1-P. Then they will hunt for the other prey, also the probability of Alice killing it is P and the probability of Bob killing it is 1-P.
But Alice knows about Bob. She knows that the probability of Bob choosing tiger as his first target is Q, and the probability of choosing wolf is 1-Q. So that Alice can decide her first target to make her expected score as high as possible.

输入:

The first line of input contains an integer T (1≤T≤10000), the number of test cases.
Then T test cases follow. Each test case contains X, Y, P, Q in one line. X and Y are integers and 1≤X, Y≤1000000000. P and Q are decimals and 0≤P, Q≤1, and there are at most two digits after decimal point.

输出:

The first line of input contains an integer T (1≤T≤10000), the number of test cases.
Then T test cases follow. Each test case contains X, Y, P, Q in one line. X and Y are integers and 1≤X, Y≤1000000000. P and Q are decimals and 0≤P, Q≤1, and there are at most two digits after decimal point.

样例输入:

3
2 1 0.5 0.5
2 1 0 1
7 7 0.32 0.16

样例输出:

tiger 1.7500
wolf 1.0000
tiger 6.5968

水题。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
#define LL long long
#define eps 1e-6
double X,Y,P,Q;
int main(){
	int T;
	cin>>T;
	while(T--){
		scanf("%lf%lf%lf%lf",&X,&Y,&P,&Q);
		double t1=(X+Y)*P*Q+X*(1-Q);
		double t2=(X+Y)*P*(1-Q)+Y*Q;
		bool flag=0;
		double res;
		if(t1>t2-eps){
			flag=0;
			res=t1;
		}
		else {
			flag=1;
			res=t2;
		}
		if(flag)cout<<"wolf ";
		else cout<<"tiger ";
		printf("%.4f\n",res);
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

参考:http://blog.csdn.net/baoli1008/article/details/40505345