hdu—1002
来源:互联网 发布:梁洛施 知乎 编辑:程序博客网 时间:2024/05/27 09:47
光头强选举
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
光头强非常渴望权利。他想赢得即将到来的选举。
现在有n个候选人,包括光头强,其中光头强是一号候选人。我们现在已经知道每个候选人获得了多少张选票。其中第i个候选人拥有ai 张选票。为了赢得选举,光头强的得票数必须严格大于其他候选人。
胜利比一切都重要,所以光头强决定通过作弊来赢得选举。他会通过贿赂将给其竞争者投票的选民将选票改投给自己。那么光头强最少要贿赂几个选民才能获得选举的胜利?
现在有n个候选人,包括光头强,其中光头强是一号候选人。我们现在已经知道每个候选人获得了多少张选票。其中第i个候选人拥有
胜利比一切都重要,所以光头强决定通过作弊来赢得选举。他会通过贿赂将给其竞争者投票的选民将选票改投给自己。那么光头强最少要贿赂几个选民才能获得选举的胜利?
Input
输入数据包含多个测试实例,每个测试实例的第一行有整数 n (2≤ n ≤ 100),表示有n个候选人。
接下来1行有n个数a1 , a2 ,... an (1 ≤ai≤ 1000)表示每个候选人的票数。
接下来1行有n个数
Output
对于每个测试实例,输出最少要贿赂几个人才能使光头强赢得选举(他的得票数严格大于其他所有候选人)
Sample Input
4 1 8 8 85 5 1 11 2 8
Sample Output
64Hint第一个样例:从其他三个候选人手里各拿到两张选票,最终结果为 7 6 6 6,其中光头强为1号,所以胜利。
【分析】
没什么好说的...不要想太多就好了,数据范围给了的只有100个人,所以每次找票最多的那个人,从他手里拿一票给自己,直到自己是票数最多的就可以了。
//稍微注意一下题目里说的是严格大于....
【代码】
#include <stdio.h>using namespace std;int n;int a[110];int main(){ while (~scanf("%d",&n)) { int ma=-1; int now=-1; for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]>ma) { ma=a[i]; now=i; } } int ans=0; while(now!=0) { a[now]--; a[0]++; ans++; ma=-1; for(int i=0;i<n;i++) if(a[i]>ma) { ma=a[i]; now=i; } } for(int i=1;i<n;i++) if(a[i]==a[0]) { ans++; break; } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu校赛—1002
- hdu—1002
- HDU 1002
- hdu 1002
- HDU-1002
- hdu 1002
- HDU 1002
- HDU 1002
- hdu 1002
- hdu 1002
- hdu 1002
- hdu 1002
- HDU 1002
- hdu 1002
- hdu 1002
- hdu 1002
- HDU 1002
- HDU 1002
- 数学实验(matlab)
- POJ 2548 Subway 笔记
- 单例模式C++实现
- 统计学习方法笔记1--统计学习方法概论
- css清除浮动clearfix:after的用法详解(附完整代码)
- hdu—1002
- POJ 1050 To the Max
- 解决jpgraph在php7.0版本下时,无法显示例子图表的问题
- Debug:This kind of launch is configured to openthe debug perspective when it suspends
- Redis禁用flushAll,flushDb,keys命令
- machine learning key word (part one)
- 用户名密码正确,在登陆界面循环的问题centos7
- 两个有序链表的合并(递归)
- A*B Problem II