uva 10142
来源:互联网 发布:淘宝客都在哪里做推广 编辑:程序博客网 时间:2024/06/12 22:50
#include<iostream>
#include<queue>
#include<algorithm>
#include<map>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include <iomanip>
#include <stack>
#include <vector>
#include <sstream>
////////
using namespace std;
typedef pair<int,int>candidates_vote;
vector<int>w,l;
vector<string>namelist;
vector<vector<int>>v;
int main()
{
int i,j;
int winnner,loser;
int Case,num_of_candidates;
bool flag = false;
string s;
scanf("%d",&Case);
while(Case--)
{
if(flag)
cout<<endl;
flag = true;
scanf("%d",&num_of_candidates);
namelist.clear();
getchar();
for(i=0;i<num_of_candidates;i++)
{
getline(cin,s);
namelist.push_back(s);
}
////////////输入候选人
v.clear();
while(true)
{
string str1;
getline(cin,str1);
if(str1.size()==0)
break;
stringstream str2(str1);
vector<int>temp;
for(i=0;i<num_of_candidates;i++)
{
int f;
str2>>f;
temp.push_back(f-1);
}
v.push_back(temp);
}
////////////输入投票
unsigned long con = v.size();
vector<bool>eliminated(num_of_candidates,false);
while(true)
{
vector<int>votes(num_of_candidates);
for(i=0;i<con;i++)
{
for(j=0;j<num_of_candidates;j++)
{
if(eliminated[v[i][j]])
continue;
votes[v[i][j]]++;
break;
}
}
vector<candidates_vote>k;
for(i=0;i<num_of_candidates;i++)
{
if(!eliminated[i])
k.push_back(make_pair(votes[i],i));
}
sort(k.begin(),k.end());
reverse(k.begin(),k.end());
//////////整理投票
winnner = k[0].first;
loser = k[k.size()-1].first;
w.clear();
l.clear();
for(i=0;i<num_of_candidates;i++)
{
if(eliminated[i])
continue;
if(winnner == votes[i])
w.push_back(i);
if(loser == votes[i])
l.push_back(i);
}
if(winnner==loser)
{
for(i=0;i<num_of_candidates;i++)
{
if(!eliminated[i])
cout<<namelist[i]<<endl;
}
break;
}
else if(winnner*2>con)
{
cout<<namelist[w[0]]<<endl;
break;
}
else
{
for(i=0;i<l.size();i++)
eliminated[l[i]] = true;
}
/////////逐步选举
}
}
}
#include<queue>
#include<algorithm>
#include<map>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include <iomanip>
#include <stack>
#include <vector>
#include <sstream>
////////
using namespace std;
typedef pair<int,int>candidates_vote;
vector<int>w,l;
vector<string>namelist;
vector<vector<int>>v;
int main()
{
int i,j;
int winnner,loser;
int Case,num_of_candidates;
bool flag = false;
string s;
scanf("%d",&Case);
while(Case--)
{
if(flag)
cout<<endl;
flag = true;
scanf("%d",&num_of_candidates);
namelist.clear();
getchar();
for(i=0;i<num_of_candidates;i++)
{
getline(cin,s);
namelist.push_back(s);
}
////////////输入候选人
v.clear();
while(true)
{
string str1;
getline(cin,str1);
if(str1.size()==0)
break;
stringstream str2(str1);
vector<int>temp;
for(i=0;i<num_of_candidates;i++)
{
int f;
str2>>f;
temp.push_back(f-1);
}
v.push_back(temp);
}
////////////输入投票
unsigned long con = v.size();
vector<bool>eliminated(num_of_candidates,false);
while(true)
{
vector<int>votes(num_of_candidates);
for(i=0;i<con;i++)
{
for(j=0;j<num_of_candidates;j++)
{
if(eliminated[v[i][j]])
continue;
votes[v[i][j]]++;
break;
}
}
vector<candidates_vote>k;
for(i=0;i<num_of_candidates;i++)
{
if(!eliminated[i])
k.push_back(make_pair(votes[i],i));
}
sort(k.begin(),k.end());
reverse(k.begin(),k.end());
//////////整理投票
winnner = k[0].first;
loser = k[k.size()-1].first;
w.clear();
l.clear();
for(i=0;i<num_of_candidates;i++)
{
if(eliminated[i])
continue;
if(winnner == votes[i])
w.push_back(i);
if(loser == votes[i])
l.push_back(i);
}
if(winnner==loser)
{
for(i=0;i<num_of_candidates;i++)
{
if(!eliminated[i])
cout<<namelist[i]<<endl;
}
break;
}
else if(winnner*2>con)
{
cout<<namelist[w[0]]<<endl;
break;
}
else
{
for(i=0;i<l.size();i++)
eliminated[l[i]] = true;
}
/////////逐步选举
}
}
}
0 0
- uva 10142
- uva 10142
- uva 10142 续
- UVA 10142 将军
- Uva-10142-Australian Voting
- UVa 10142 Australian Voting
- UVa 10142 - Australian Voting
- UVA 10142 Australian Voting
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- MapReduce之WordCount
- JQuery 内容过滤选择器
- js object对象转换为自定义对象
- Java 当前时间的之前一天,前一个月,前一个星期,前一年,当期时间所在星期,月份,年份表示
- 文章标题
- uva 10142
- 在centos上用yum安装docker
- java四大基本加密法只BASE64
- 考研内容分享
- Android设备调试(一)没有USB插口,通过TCP/IP调试
- 递归算法 快速排序
- python 图片批量重命名
- drawRect: 和 - (void)setNeedsDisplay 的一些理解
- 堆和栈的区别