题意:澳大利亚投票系统要求选民们将所有候选人按愿意选择的程度排序,一张选票就是一个排序。一开始,每张选票的首选项将被统计。若有候选人得票超过50%,他讲直接胜出;否则,所有并列最低的候选人出局,而那些将出局候选人排在第一位的选票将被重新统计为排名最高的未出局候选人。这一筛选过程将持续进行,直到某个候选人得到超过50%的选票,或所有候选人得票相同。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 50;
#define INF 0x3fffffff
int vote[1050][N];
int out[N], cnt[N];
char name[N][100];
int num;
int main()
{int T, n, i, j;char str[1000];scanf("%d",&T);while(T--){scanf("%d",&n);getchar();for(i = 1; i <= n; i++)gets(name[i]);num = 0;while(gets(str) != NULL){if(!strcmp(str, "")) break;int len = strlen(str);int s = 0, k = 0;for(i = 0; i < len; i++){if(str[i] >= '0' && str[i] <= '9')s = s * 10 + str[i] - '0';else{vote[num][k++] = s;s = 0;}}vote[num][k++] = s;num++;}memset(out, 0, sizeof(out));int flag = 0, rest = n, total = 0;while(rest > 1) //未出局候选人数超过1{total = 0; //总票数memset(cnt, 0, sizeof(cnt));for(i = 0; i < num; i++){for(j = 0; j < n; j++){if(!out[vote[i][j]]){cnt[vote[i][j]]++;total++;break;}}}for(i = 1; i <= n; i++)if(cnt[i] * 2 > total && !out[i]){printf("%s\n",name[i]);flag = 1;break;}if(flag) break;int mmin = INF, mmax = 0;for(i = 1; i <= n; i++){if(!out[i]){mmin = min(mmin, cnt[i]);mmax = max(mmax, cnt[i]);}}if(mmin == mmax)break;for(i = 1; i <= n; i++)if(cnt[i] == mmin){out[i] = 1;rest--;}}if(!flag){for(i = 1; i <= n; i++)if(!out[i])printf("%s\n", name[i]);}if(T > 0)printf("\n");}return 0;
}

UVA 10142 Australian Voting(模拟)相关推荐

  1. ZOJ1845 Australian Voting

    ZOJ1845 Australian Voting 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=845 Austra ...

  2. UVA 1156 - Pixel Shuffle(模拟+置换)

    UVA 1156 - Pixel Shuffle 题目链接 题意:依据题目中的变换方式,给定一串变换方式,问须要运行几次才干回复原图像 思路:这题恶心的一比,先模拟求出一次变换后的相应的矩阵,然后对该 ...

  3. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  4. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  5. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  6. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

  7. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  8. UVA10142/PC110108Australian Voting

    UVA10142/PC110108Australian Voting 10142 Australian Voting Accepted C++11 0.769 2014-02-11 05:01:20 ...

  9. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

最新文章

  1. linux下如何将mysql加入环境变量
  2. CentOS 7 yum源安装Nginx
  3. java推送技术_java网络编程 - java服务器推送技术系列方案实战
  4. 20211108 det(AB)=det(A)det(B)
  5. Git 之五 通信协议(HTTPS、SSH、Git)、使用远程仓库(GitHub、GitLab、Gitee等)
  6. [LeetCode] Invert Binary Tree - 二叉树翻转系列问题
  7. 【STM32】外部中断
  8. mapreduce分组统计_Mongodb的分组统计MapReduce
  9. Distances to Zero CodeForces - 803B (二分)
  10. [代码片断]SQL中解析XML数据
  11. 【Django 2021年最新版教程26】模板语言 前端if判断怎么用 实例
  12. 在计算机设备中 麦克风属于( ),计算机一级考试基础及MSOffice应用单选真题
  13. Eviews(8)进行线性回归(ols一元)与格兰杰(Granger)因果关系检验操作步骤
  14. 参数篡改(Parameter Tampering)
  15. 计算机上的英语键代表什么,键盘上的英文键代表什么意思
  16. 数据库作业 用Python读取Excel 数据 存放到mysql中
  17. 基于JAVA工作流流程编辑OA系统计算机毕业设计源码+数据库+lw文档+系统+部署
  18. MAC系统下解决Teamviewer 是商业用途只能连5分钟的问题--修改Teamviewer的id
  19. ZJM 与纸条(KMP算法)
  20. JavaScript-Ajax

热门文章

  1. halcon算子之tuple_gen_const,用于生成特定长度的元组并且初始化其元素
  2. 异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...
  3. Meterpreter Guide
  4. python生成式、生成器和迭代器
  5. 英特尔在中国投资55亿美元非易失性存储项目投产
  6. C++ new/delete、malloc/free
  7. Nginx源码分析(3)
  8. SCOM 2012知识分享-21:无代理管理
  9. 《自己动手写开发工具》试读版电子书及光盘
  10. AXIS2使用问题解决点滴