zoukankan      html  css  js  c++  java
  • poj 4438 Hunters

                                                                            Hunters

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 1588    Accepted Submission(s): 1194


    Problem Description
    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.
     
    Input
    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.
     
    Output
    For each test case, output the target Alice should choose and the highest expected score she can get, in one line, separated by a space. The expected score should be rounded to the fourth digit after decimal point. It is guaranteed that Alice will have different expected score between choosing tiger and wolf.
     
    Sample Input
    3 2 1 0.5 0.5 2 1 0 1 7 7 0.32 0.16
     
    Sample Output
    tiger 1.7500 wolf 1.0000 tiger 6.5968
    题意:两个猎人比赛打猎,现在猎物有老虎和狼,猎杀老虎有X分,猎杀狼有Y分,并且其中一个猎人Alice知道同伴选择猎杀老虎的概率Q,猎杀狼的概率为(1-Q),并且如果两个人分别独自猎杀狼或者老虎,都能百分百将猎物猎杀,但如果他们选择
    猎杀同一猎物,不管猎杀谁,Alice都有P的概率率先猎杀猎物,而其同伴则有(1-P)的概率猎杀猎物,求Alice的期望分数,并输出最高的期望分数(选狼还是选老虎)。
    思路:概率问题,程序就是计算得到的期望公式就好了,没什么难度。期望公式
    Alice选老虎的E(score)=(1 - Q)*X + Q*(X*P + Y*P) 
    Alice选狼的   E(score)=Q*Y + (1 - Q)*(Y*P + X*P)
    AC代码:
    #define _CRT_SECURE_NO_DEPRECATE
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<set>
    #include<map>
    #include<vector>
    #include<queue>
    using namespace std;
    const int N_MAX = 100000+4;
    double P, Q,X,Y;
    int main() {
        int T;
        scanf("%d",&T);
        while (T--) {
            scanf("%lf%lf%lf%lf", &X, &Y, &P, &Q);
            double ext_1 = (1 - Q)*X + Q*(X*P + Y*P);
            double ext_2 = Q*Y + (1 - Q)*(Y*P + X*P);
            if (ext_1 > ext_2) {
                printf("tiger %.4lf
    ", ext_1);
            }
            else
                printf("wolf %.4lf
    ",ext_2);
        }
        return 0;
    }
  • 相关阅读:
    python字符串以单词形式反转
    python if 语句的练习
    Python对元祖的操作
    Python对列表的操作
    Python对字符串的操作
    导出EXCEL【Web方式HTML通过拼接html中table】
    链接点击跳动问题
    maven报uri is not registered错误
    maven配置
    三级分类的sql语句
  • 原文地址:https://www.cnblogs.com/ZefengYao/p/6668962.html
Copyright © 2011-2022 走看看