关闭

RMRC2016问题 B: Election(概率计算)

标签: 概率
807人阅读 评论(0) 收藏 举报
分类:

石油大http://exam.upc.edu.cn/problem.php?cid=1242&pid=1

问题 B: Election

时间限制: 1 Sec  内存限制: 128 MB
提交: 83  解决: 12
[提交][状态][讨论版]

题目描述

After all the fundraising, campaigning and debating, the election day has finally arrived. Only two candidates remain on the ballot and you work as an aide to one of them.
Reports from the voting stations are starting to trickle in and you hope that you can soon declare a victory.
There are N voters and everyone votes for one of the two candidates (there are no spoiled ballots). In order to win, a candidate needs more than half of the votes. A certain number M≤N of ballots have been counted, and there are Vi votes for candidate i (V1+V2 = M), where V1 is the number of votes your candidate received.
Due to the historical data and results of highly scientific polls, you know that each of the remaining votes has a 50% chance to go to your candidate. That makes you think that you could announce the win before all the votes are counted. So, if the probability of winning strictly exceeds a certain threshold W, the victory is yours! We just hope you are sure of this, we don’t want any scandals...

输入

The first line of input contains a single positive integer T≤100 indicating the number of test cases. Next
T lines each contain four integers: N, V1, V2 and W as described above.
The input limits are as follows:
1≤N≤50
50≤W<100
V1,V2≥0
V1 + V2≤N

输出

For each test case print a single line containing the appropriate action:
 If the probability that your candidate will win is strictly greater than W%, print
         GET A CRATE OF CHAMPAGNE FROM THE BASEMENT!
 If your candidate has no chance of winning, print
         RECOUNT!
 Otherwise, print
         PATIENCE, EVERYONE!

样例输入

4
5 0 3 75
5 0 2 75
6 1 0 50
7 4 0 75

样例输出

RECOUNT!
PATIENCE, EVERYONE!
PATIENCE, EVERYONE!
GET A CRATE OF CHAMPAGNE FROM THE BASEMENT!
【解析】:

题意,计算出剩余票数,投票,能使得1号获胜的概率,然后与w%比较。

以第三组示例解析:

剩余m=5票,1号得其中的3,4,5票便能获胜,所以1号获胜的概率:

p=C(m,3)*0.5^5 + C(m,4)*0.5^5 + C(m,5)*0.5^5

然后考虑到实数精度问题,过程中不进行除法,而是比较时,分子分母化简一下,使得运算过程全用long long即可

详见代码。

另,还有一处优化,如果算概率过程中,虽然p没加完,但已经大于概率w了,直接退出循环就行了。

【代码】:

#include <stdio.h>
#include <math.h>
typedef long long ll;
ll qpow(ll n,ll m){ll ans=1;while(m){if(m%2) 
		ans=(ans*n);m/=2;n=(n*n);}return ans;}

ll Cf[55][55];
int main()
{
 	//组合数打表 
	Cf[0][0]=1;//特殊  
	    for(int i=1;i<=51;i++)  
	        for(int j=0;j<=51;j++)
	            Cf[i][j]=(j==0)?1:(Cf[i-1][j]+Cf[i-1][j-1]);
	int n,v1,v2,w,T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d%d",&n,&v1,&v2,&w);
		int m=n-v1-v2;//剩余人数
		int sh=n/2+1;//获胜最少票数 
		int t=sh-v1;//还差几票
		ll p=0;
		int flag=0;
		for(int i=t>0?t:0;i<=m;i++)
		{
			p+=Cf[m][i];
			//printf("%lf\n",p/pow(2,m));
			if(p*100>w*qpow(2,m))
			{
				flag=1;break;
			}
		}
		if(flag)
			puts("GET A CRATE OF CHAMPAGNE FROM THE BASEMENT!");
		else if(2*v2>=n)
			puts("RECOUNT!");
		else
			puts("PATIENCE, EVERYONE!");
	}
	return 0;
}


0
0
查看评论

RMRC2016: B Election 组合数学

B: Election 时间限制: 1 Sec  内存限制: 128 MB 提交: 122  解决: 21 [提交][状态][讨论版] 题目描述 After all the fundraising, c...
  • sizaif
  • sizaif
  • 2017-09-04 21:04
  • 424

条件随机场(CRF) - 3 - 概率计算问题

声明:          1,本篇为个人对《2012.李航.统计学习方法.pdf》的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。      ...
  • xueyingxue001
  • xueyingxue001
  • 2016-05-25 15:50
  • 2103

隐马尔可夫模型(HMM) - 2 - 概率计算方法

声明:          1,本篇为个人对《2012.李航.统计学习方法.pdf》的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。       ...
  • xueyingxue001
  • xueyingxue001
  • 2016-05-17 14:24
  • 4234

算法提高 概率计算(动态规划)

问题描述   生成n个∈[a,b]的随机整数,输出它们的和为x的概率。 输入格式   一行输入四个整数依次为n,a,b,x,用空格分隔。 输出格式   输出一行包含一个小数位和为x的概率,小数点后保留四位小数 样例输入 2 1 3 4 样例输出 ...
  • qq_33160271
  • qq_33160271
  • 2017-03-10 23:23
  • 334

java基础算法学习之概率算法

概率算法是以前一直没有接触过的算法,第一眼看见的时候真的觉得很厉害,这个算法的思想很简单但是运用好很难,大概就是将问题转化为几何图形,然后通过点的分布来求解我们需要的信息,这里的例子是求解π, 画的图确实有点丑,大概就是以正方形的变长为1,圆形的半径为1,那么我知道知道第一象限圆的面积为π...
  • justperseve
  • justperseve
  • 2016-04-25 09:14
  • 2494

[面试]排列组合与概率计算(一)

样本空间的定义 随机变量的引入 例1. 一民航送客车载有20位旅客自机场开出,旅客有10个车站可以下车.如到达一个车站没有旅客下车就不停车.以X表示停车的次数,求E(X)(设每位旅客在各个车站下车是等可能的,并设各位旅客是否下车相互独立)。引入随机变量 Xi={0,1,第i站无人下车第i站有人下车...
  • lanchunhui
  • lanchunhui
  • 2016-01-08 21:24
  • 921

填空题红白球概率问题

 概率问题某个袋子中有红球m个,白球n个。现在要从中取出x个球。那么红球数目多于白球的概率是多少呢? 下面的代码解决了这个问题。其中的y表示红球至少出现的次数。 这与前文的问题是等价的。因为如果取30个球,要求红球数大于白球数,则等价于至少取出16个红球。请根据仅存的线索,判断程序逻辑,并...
  • a716121
  • a716121
  • 2016-03-04 11:02
  • 456

概率论经典问题之匹配问题

一个屋子里面有N个人,每个人有一顶帽子。假如所有人把帽子扔到屋子中央,然后每个人都随机选一顶帽子。 a) 没有人捡到自己帽子的概率; b) 有k(k⩽N)k(k \leqslant N)个人捡到自己帽子的概率。
  • pdcxs007
  • pdcxs007
  • 2015-10-23 18:27
  • 6408

一个关于概率的问题的思考

最近需要给公司内部编写一个随机生成人员名单的小工具,在解决这个问题的过程中,我认识到这是一个概率相关的问题,即使在过去我曾经设计过类似转盘抽奖这样的应用程序,可我并不认为我真正搞清楚了这个问题,所以想在这篇文章中说说我对概率问题的相关思考。首先,我们来考虑这个问题的背景,我们需要定期在内部举行英语交...
  • qinyuanpei
  • qinyuanpei
  • 2016-10-19 00:00
  • 2011

蓝桥杯 概率问题 递归概率计算

概率问题 某个袋子中有红球m个,白球n个。现在要从中取出x个球。那么红球数目多于白球的概率是多少呢? 下面的代码解决了这个问题。其中的y表示红球至少出现的次数。 这与前文的问题是等价的。因为如果取30个球,要求红球数大于白球数,则等价于至少取出16个红球。请根据仅存的线索,判断程序逻辑...
  • wr132
  • wr132
  • 2015-04-02 11:01
  • 788
    个人资料
    • 访问:102806次
    • 积分:3009
    • 等级:
    • 排名:第13799名
    • 原创:197篇
    • 转载:9篇
    • 译文:0篇
    • 评论:33条
    博客专栏
    最新评论