hdu 2094 产生冠军(STL,set)
//把所有的出现的名字开始默认都为冠军(1),然后输了的置为0,表示不为冠军,最后统计不为0的,
//当有且只有一个不为0的,这个就为冠军,否则,不能产生冠军.
//以上思路来自别人的博客。。
//set可以去重,所以这里用了set
//set可以去重,并且自动排序 //数set元素个数要用 s.size() 的啊 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<string> #include<math.h> #include<set> using namespace std; //#define IN freopen("c:\\Users\\nit\\desktop\\input.txt", "r", stdin) //#define OUT freopen("c:\\Users\\nit\\desktop\\output.txt", "w", stdout) //int gcd(int a,int b){return b==0?a:gcd(b,a%b);} int main() { int n,i; string a,b; set<string>s1; set<string>s2; while(scanf("%d",&n),n) { s1.clear(); s2.clear(); for(i=0;i<n;i++) { cin>>a>>b; s1.insert(a);// s1.insert(b);//把所有的都放在s1 s2.insert(b);//把输过的都放在s2 } if(s1.size()- s2.size() == 1)//比较s1和s2的不重复元素个数 printf("Yes\n"); else printf("No\n"); } return 0; }
一道又一道,好高兴!