题解报告:hdu 2094 产生冠军
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2094
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i,mark[],sum; //n对选手,mark数组来标记胜利和失败
char a[][],b[],c[];//二维数组a模拟STL中set容器集合,元素具有唯一性,b打败c
bool fb,fc;//标记当前输入的b和c字符串是否出现过
while(cin>>n && n){
getchar();//吃掉回车符
sum=i=;
memset(mark,-,sizeof(mark)); //全部初始化为-1,-1表示为冠军
memset(a,,sizeof(a));//a数组全部初始化为0
while (n--){ //n对选手
fb=fc=false; //标记为假
cin>>b>>c;
if(i==){//处理第一对选手
strcpy(a[i++],b);//先把b,c分别赋值给a数组
strcpy(a[i++],c);
mark[i-]=; //c对应下标标记存c字符串的结果为0,表示输
}
else{//处理除第一对选手之外的选手情况
for(int j=;j<i;j++){//循环到i-1即可,判断以前是否出现过
if(strcmp(a[j],b)==)fb = true;//标记b出现过
if(strcmp(a[j],c)==){//比较c
mark[j]=; //有的话顺便将其置为0,因为是输
fc=true; //同时标记出现过
}
}
if(!fb)strcpy(a[i++],b);//没出现的话,还得赋值给a数组
if(!fc){
strcpy(a[i++],c);//赋值给a数组之后还得让对应的标记为0
mark[i-]=;
}
}
}
for(int j=;j<i;j++)
if (mark[j]==-)sum++;//统计mark数组胜利的人数
if (sum!=)cout<<"No"<<endl;//没有冠军
else cout<<"Yes"<<endl; //产生冠军
}
return ;
}
解法二:使用STL中的set容器。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
string a,b;
set<string> all;//保存所有选手的名字
set<string> lose;//保存被打败的选手名字
while(cin>>n && n){
all.clear();//每次输入选手群时清空两个容器
lose.clear();
while(n--){
cin>>a>>b;
all.insert(a);//将两个选手名字都插入到all容器中
all.insert(b);
lose.insert(b);//失败的选手名字则插入到lose容器中
}
if(all.size()-lose.size()==)//当所有选手人数和与被打败选手人数和的差为1时,将产生冠军
cout<<"Yes"<<endl;
else//否则没有冠军
cout<<"No"<<endl;
}
return ;
}
题解报告:hdu 2094 产生冠军的更多相关文章
- hdu 2094 产生冠军
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094 产生冠军 Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比 ...
- [HDU] 2094 产生冠军(拓扑排序+map)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2094 注意每组数据处理前,map要清空. #include<cstdio> #includ ...
- HDU 2094 产生冠军 dfs加map容器
解题报告:有一群人在打乒乓球比赛,需要在这一群人里面选出一个冠军,现在规定,若a赢了b,b又赢了c那么如果a与c没有比赛的话,就默认a赢了c,而如果c赢了a的话,则这三个人里面选不出冠军,还有就是如果 ...
- HDU 2094 产生冠军 (map容器)
title: 产生冠军 杭电 2094 tags: [acm,stl] 题目链接 Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则 ...
- hdu 2094 产生冠军(拓扑排序)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 2094 产生冠军(半拓扑排序+map)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu 2094 产生冠军(STL,set)
题目 //把所有的出现的名字开始默认都为冠军(1),然后输了的置为0,表示不为冠军,最后统计不为0的, //当有且只有一个不为0的,这个就为冠军,否则,不能产生冠军. //以上思路来自别人的博客.. ...
- [HDU] 2094 产生冠军(拓扑排序+map)
产生冠军 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- HDU 2094 产生冠军(STL map)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- Angular团队公布路线图,并演示怎样与React Native集成
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/angular-2-react-native-roadmap 前不久在旧 ...
- [Zlib]_[0基础]_[使用zlib库压缩文件]
场景: 1. WIndows上没找到系统提供的win32 api来生成zip压缩文件, 有知道的大牛麻烦留个言. 2. zlib比較经常使用,编译也方便,使用它来做压缩吧. MacOSX平台默认支持z ...
- 给工作赋予的新意义——Leo鉴书78
现代社会学三大奠基人有两位名字里有"马克思",他们都是德国人.当中一位就是写<资本论>的卡尔•马克思,另一位就是<新教伦理与资本主义精神>的作者马克思•韦伯 ...
- 说说Windows7 64bits下安装TensorFlow GPU版本会遇到的一些坑
不多说,直接上干货! 再写博文,回顾在Windows7上安装TensorFlow-GPU的一路坑 Windows7上安装TensorFlow的GPU版本后记 欢迎大家,加入我的微信公众号:大数据躺过的 ...
- log4j_自定义样式参数意义
#自定义样式 %c 输出所属的类目,通常就是所在类的全名 %C 输出Logger所在类的名称,通常就是所在类的全名 %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比 ...
- linux下jiffies定时器和hrtimer高精度定时器【转】
本文转载自:http://blog.csdn.net/dosculler/article/details/7932315 一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jif ...
- HDU1542 Atlantis —— 求矩形面积并 线段树 + 扫描线 + 离散化
题目链接:https://vjudge.net/problem/HDU-1542 There are several ancient Greek texts that contain descript ...
- HDU1074 Doing Homework —— 状压DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1074 Doing Homework Time Limit: 2000/1000 MS (J ...
- Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard http://silverlightchina.net/html/tips/2010/0329/934.html
Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard 时间:2010-03-29 11:13来源:SilverlightChina.Net 作者:jv9 点击: ...
- mac系统下配置域名映射关系
1.cd /private/etc/ 先修改权限:sudo chmod 777 hosts vi hosts localhost:etc mhx$ cat hosts ## # Host Databa ...