HDU 4438 Hunters (数学,概率计算)

题意:猎人A和B要进行一场比赛。现在有两个猎物老虎和狼,打死老虎可以得X分,打死狼可以得Y分。现在有两种情况:

(1)如果A与B的预定目标不同,那么他们都将猎到预定的目标。

(2)如果A与B的预定目标相同,A杀死目标的概率为P,B杀死这个目标的概率为1-P。接着他们将猎取第二只猎物,概率同上。

现在A知道B选择老虎作为他的首目标的概率为Q,B选狼作为首目标的概率为1-Q。所以A必须选择他的首目标,来使得他的期望分数最高。

析:分情况讨论么,首先选Tiger,再选Wolf,看看哪个大,就选哪个,比如先选Tiger,那么B有Q的概率也选Tiger,并且A打中的概率是P,

打完Tiger,再打Wolf,再加上,B打Wolf的期望,那么总起来的期望就是 P * Q * (X+Y) + (1-Q) * X。

同理也计算先打Wolf的期望。

代码如下:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <string>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <cstring>
#include <set>
#include <queue>
#include <algorithm>
#include <vector>
#include <map>
#include <cctype>
#include <stack>
using namespace std;

typedef long long LL;
typedef pair<int, int> P;
const int INF = 0x3f3f3f3f;
const double inf = 0x3f3f3f3f3f3f;
const double PI = acos(-1.0);
const double eps = 1e-8;
const int maxn = 10 + 5;
const int mod = 1e9 + 7;
const char *mark = "+-*";
const int dr[] = {-1, 0, 1, 0};
const int dc[] = {0, 1, 0, -1};
int n, m;
inline bool is_in(int r, int c){
    return r >= 0 && r < n && c >= 0 && c < m;
}

int main(){
    int T;  cin >> T;
    while(T--){
        double x, y, p, q;
        cin >> x >> y >> p >> q;
        double ans1 = p * q * (y + x) + (1 - q) * x;
        double ans2 = q * y + p * (1 - q) * (x + y);
        double ans = max(ans1, ans2);
        if(ans1 > ans2)  printf("tiger ");
        else  printf("wolf ");
        printf("%.4f\n", ans);
    }
    return 0;
}
时间: 2024-08-10 02:09:22

HDU 4438 Hunters (数学,概率计算)的相关文章

HDU 4438 Hunters 区域赛水题

本文转载于 http://blog.csdn.net/major_zhang/article/details/52197538 2012天津区域赛最水之题: 题意容易读懂,然后就是分情况求出A得分的数学期望,所谓数学期望就是在该概率下的平均得分. 现在就是两种方案,Alice要根据输入给出的数据情况选出最优方案,也就是先选老虎,还是狼. 1.A先选老虎: a.B也先选老虎,则得分为Q(P*X+P*Y); //打完老虎还要打狼 b.B选狼,则两人可以直接获得猎物,则得分为(1-Q)*X 所以1方案

HDU 4652 Dice (概率DP)

Dice Problem Description You have a dice with m faces, each face contains a distinct number. We assume when we tossing the dice, each face will occur randomly and uniformly. Now you have T query to answer, each query has one of the following form: 0

条件随机场入门(三) 条件随机场的概率计算问题

条件随机场的概率计算问题是给定条件随机场 P(Y|X) ,输入序列 x 和输出序列 y ,计算条件概率 $P(y_i|x)$ , $P(y_{i-1},y_i|x)$ 以及相应的数学期望的问题.为了方便起见,像 HMM 那样,引进前向-后向向量,递归地计算以上概率及期望值.这样的算法称为前向-后向算法. 前向-后向算法 对每个指标 $i = 0,1,-,n+1$ ,定义前向向量 $a_i(x)$ ,对于起始状态 $i=0$: \[a_0(y|x) = \left \{ \begin{aligne

程序员眼中的统计学(3)】概率计算:把握机会

概率计算:把握机会 作者 白宁超 2015年10月13日23:23:13 摘要:程序员眼中的统计学系列是作者和团队共同学习笔记的整理.首先提到统计学,很多人认为是经济学或者数学的专利,与计算机并没有交集.诚然在传统学科中,其在以上学科发挥作用很大.然而随着科学技术的发展和机器智能的普及,统计学在机器智能中的作用越来越重要.本系列统计学的学习基于<深入浅出统计学>一书(偏向代码实现,需要读者有一定基础,可以参见后面PPT学习).正如(吴军)先生在<数学之美>一书中阐述的,基于统计和数

[ACM] HDU 4576 Robot (概率DP,滚动数组)

Robot Problem Description Michael has a telecontrol robot. One day he put the robot on a loop with n cells. The cells are numbered from 1 to n clockwise. At first the robot is in cell 1. Then Michael uses a remote control to send m commands to the ro

HDU 4870 Rating(概率、期望、推公式) &amp;&amp; ZOJ 3415 Zhou Yu

其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒)四五次才上来写这份有抄袭嫌疑的题解... 这2题很类似,多校的rating相当于强化版,不过原理都一样.好像是可以用高斯消元做,但我不会.默默推公式了. 公式推导参考http://www.cnblogs.com/chanme/p/3861766.html#2993306 http://www.cn

hdu 1203 dp(关于概率的```背包?)

题意:一个人手里有一笔钱 n ,有 m 所大学,分别知道这些大学的投简历花费和被录取概率,因为钱数有限,只能投一部分学校,问被录取的概率最大有多大. 这题除去计算概率以外就是一个 0 1 背包问题,所以可以完全按照 0 1 背包的方法做,只是将价值计算变成概率计算而已 dp [ j ] 表示花费了 j 时概率的最大值: 当遍历到第 i 个大学时,第 i 个大学花费 a ,被录取的概率 b ,当前被录取概率为 dp:那个加上第 i 所大学,概率就是: (原本被录取概率)+(原本未被录取概率)* b

javascript抽奖插件+概率计算

写了一个抽奖的jquery插件和计算概率的方法, 结合起来就是一个简单的概率抽奖, 不过实际项目中基本不会把抽奖概率的计算放在前端处理~. 概率计算 function Probability(conf) { this.probArr = conf || []; this.range = [], this.len = this.probArr.length; if (this.len > 0) { this.init(); } } Probability.prototype = { init: f

HDU 3366 Passage (概率DP)

Passage Problem Description Bill is a millionaire. But unfortunately he was trapped in a castle. There are only n passages to go out. For any passage i (1<=i<=n), Pi (0<=Pi<=1) denotes the probability that Bill will escape from this castle saf