• hdu2094产生冠军(思维题)


    产生冠军

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 22557    Accepted Submission(s): 10249


    Problem Description
    有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。
    球赛的规则如下:
    如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。
    如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。
    根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。
     
    Input
    输入含有一些选手群,每群选手都以一个整数n(n<1000)开头,后跟n对选手的比赛结果,比赛结果以一对选手名字(中间隔一空格)表示,前者战胜后者。如果n为0,则表示输入结束。
     
    Output
    对于每个选手群,若你判断出产生了冠军,则在一行中输出“Yes”,否则在一行中输出“No”。
     
    Sample Input
    3
    Alice Bob
    Smith John
    Alice Smith
    5
    a c
    c d
    d e
    b e
    a d
    0
     
    Sample Output
    Yes
    No

    题意:给出n个比赛结果,要求最后判断能不能选出一个冠军。

    题解:看了题目给的球赛规则容易想复杂了,其实产生一个冠军就相当于只有一个人没有被打败过!!!!!!!那么只要记录一下每个被打败过的人,最后统计一下谁没有被打败过,如果只有一个人那他就是冠军,多于一个就不能产生冠军了。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 const int inf=0x3f3f3f3f;
     5 int a[1005];
     6 map<string,int>s;
     7 char x[35],y[35];
     8 int main() {
     9     while(~scanf("%d",&n),n) {
    10         s.clear();
    11         memset(a,0,sizeof(a));
    12         int ans=0;
    13         for(int i=0; i<n; i++) {
    14             scanf("%s %s",x,y);
    15             if(!s[x])s[x]=++ans;
    16             if(!s[y])s[y]=++ans;
    17             a[s[y]]=1;//被打败了
    18         }
    19         int num=0;
    20         for(int i=1; i<=ans; i++) {
    21             if(a[i]!=1) {
    22                 num++;
    23             }
    24         }
    25         if(num==1)printf("Yes
    ");
    26         else printf("No
    ");
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    IOS创建Button简单实例
    IOSActionSheet、AlertView、Slider、Switch的简单使用
    IOS翻转注意
    [教程]iOS 4 开发的好东西 (资料)url
    Proxy和Decorator模式
    Using JNDI connecting DB
    影片“One Day”,还不错
    Minabased TCP server examples
    MySQL vs. Oracle on sequence
    Java DB and JDBC(Embedded Derby)
  • 原文地址:https://www.cnblogs.com/fqfzs/p/9900451.html
Copyright © 2020-2023  润新知