题意:澳大利亚投票系统要求选民们将全部候选人按愿意选择的程度排序,一张选票就是一个排序。一開始,每张选票的首选项将被统计。若有候选人得票超过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. Uva 10142 Australia Voting

    水题 模拟 大意就是模拟一个选举的系统 认真读题,注意细节,耐心调试 #include<cmath> #include<math.h> #include<ctype.h& ...

  2. UVa 11210 - Chinese Mahjong 模拟, 枚举 难度: 0

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

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

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

  4. UVA 12050 - Palindrome Numbers 模拟

    题目大意:给出i,输出第i个镜像数,不能有前导0. 题解:从外层开始模拟 #include <stdio.h> int p(int x) { int sum, i; ;i<=x;i+ ...

  5. Uva 679 Dropping Balls (模拟/二叉树的编号)

    题意:有一颗二叉树,深度为D,所有节点从上到下从左到右编号为1,2,3.....在结点一处放一个小球,每个节点是一个开关,初始全是关闭的,小球从顶点落下,小球每次经过开关就会把它的状态置反,现在问第k ...

  6. ●UVa 1589 Xiangqi(模拟)

    ●赘述题意 给出一个中国象棋残局,告诉各个棋子的位置,黑方只有1枚“将”,红方有至少2枚,至多7枚棋子,包含1枚“帅G”,和若干枚“车R”,“马H”,“炮C”.当前为黑方的回合,问黑方的“将”能否在移 ...

  7. 【每日一题】 UVA - 213 Message Decoding 模拟解码+读入函数+阅读题

    题意:阅读理解难度一道比一道难orz.手摸了好久样例 题解: 读入:大循环用getline读入header顺便处理一下,  里面再写两重循环,外层一次读三个串,内层一次读num个串. 之后就查表,线性 ...

  8. Codeforces 749C. Voting 模拟题

    C. Voting time limit per test: 1 second memory limit per test: 256 megabytes input: standard input o ...

  9. 【紫书】【重要】Abbott's Revenge UVA - 816 bfs 复杂模拟 带方向参数的迷宫

    题意:一个迷宫,每个交叉路口有一路标,限制了你从某方向进入该路口所能进入的路口. 题解:1.对于方向的处理:将node多增加一维dir,通过一个const 字符数组 加 上dir_id函数 以及一个方 ...

随机推荐

  1. Java使用HttpURLConnection上传文件

    从普通Web页面上传文件非常easy.仅仅须要在form标签叫上enctype="multipart/form-data"就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http ...

  2. NYOJ 623 A*B ProblemII

    A*B Problem II 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描写叙述 ACM的C++同学有好多作业要做,最头痛莫过于线性代数了.由于每次做到矩阵相乘的时候,大 ...

  3. Eclipse在点击运行后不能自动保存的解决

    今天在eclipse上写程序调试时,发现当我点击运行按键之后,并不能在运行前帮我自动保存,也就是说每次修改代码之后, 运行的还是前一次运行之前的代码,并不是修改之后的代码,因此通过在网上搜索解决方案之 ...

  4. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  5. 在Qt中使用ActiveX控件

    Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件,并且也开发基于Qt的ActiveX控件.ActiveQt包含了两个组件QA ...

  6. VC,一条会被鼠标移动的直线

    对话框中的小红线可以被移动的 一.类名是 CBinarizationDlg 二.定义两个变量BOOL m_flag;int nPos;在构造函数初始化m_flag = false;nPos=256;三 ...

  7. ADO异步查询显示进度条

    一般,ADO都是以同步的方式来处理数据.这就是说,当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时, ...

  8. common lisp wiki

    CLiki: index   http://www.cliki.net/

  9. 树莓派玩耍笔记4 -- 树莓派ssh党必备的配置

    1. 关闭桌面显示 对于ssh 党.当然不须要系统花费资源在显示上. 所以我们先在 "raspi-conifg" 下选择默认启动为Text 启动(这好像也是Raspbian 的默认 ...

  10. Java 螺纹第三版 第一章Thread介绍、 第二章Thread创建和管理学习笔记

    第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Ta ...