首页 > 其他分享 >HDOJ2094 产生冠军

HDOJ2094 产生冠军

时间:2023-02-20 11:06:13浏览次数:43  
标签:arr scanner HashSet 产生 HDOJ2094 new 冠军 打败


产生冠军


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


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


 


分析题目:一开始我想到的是树,但其实不用那么复杂的。观察题目的要求知道,前一个是赢了的,后一个是输了的,输了的人一定不会是冠军,我们只需要在赢了的人中判断


是否产生冠军,使用HashSet可以省去很多麻烦,因为他是只能放进不重复的元素。


将失败了的人加入集合1,然后再如果第一列也就是赢过的人中每在集合1中找到,也就是她一直都是赢的,然后如果这样的元素只有一个,也就产生了冠军。




import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main{
private static Scanner scanner;
public static void main(String[] args) {
scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
if(n == 0){
break;
}
String arr[][] = new String[n][2];
Set<String > setFail = new HashSet<String >();
for (int i = 0; i < arr.length; i++) {
arr[i][0] = scanner.next();
arr[i][1] = scanner.next();
setFail.add(arr[i][1]);
}
Set<String >setSecc = new HashSet<String>();
for (int i = 0; i < arr.length; i++) {
if(!setFail.contains(arr[i][0])){
setSecc.add(arr[i][0]);
}
}
if(setSecc.size() == 1){
System.out.println("Yes");
}else {
System.out.println("No");
}
}
}
}



标签:arr,scanner,HashSet,产生,HDOJ2094,new,冠军,打败
From: https://blog.51cto.com/u_15741949/6067953

相关文章

  • 非关系型数据库的产生背景与分类
    1、关系型数据库遇到的问题2008年左右,网站、论坛、社交网络开始高速发展,关系型数据库的地位受到了很大的挑战。关系型数据库的以下问题逐渐凸显:●难以应付每秒上万次的......
  • P4035 [JSOI2008]球形空间产生器
    A,B,球心坐标分别为\((a_1,a_2,a_3....),(b_1,b_2,b_3....),(c_1,c_2,c_3....)\)则\(dist^2=(a_1-c_1)^2+(a_2-c_2)^2+(a_3-c_3)^2\)......\(=(b_1-c_1)^2+(b_2-c_2)^2......
  • word生成产生错误的原因
    技术背景很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等。用Java操作word文档,毫无疑问,当下最流行apachepoi,对于......
  • axios配置onUploadProgress产生跨域问题
    axios配置onUploadProgress产生跨域问题onUploadProgress监听上传进度产生跨域问题起因:ie和edge浏览器在调用xhr.upload.onprogress进度事件时,仍然只会发送post或者ge......
  • 编译驱动产生 xxx.mod.c 和 Module.symvers 文件分析
    xxx.mod.c是编译驱动的时候自动产生的,假设我们编译module.ko,当编译时就会产生一个module.mod.c文件xxx.mod.c文件源码#include<linux/module.h>#include<linux/verma......
  • Git 冲突的产生与解决
    冲突的产生与解决 内容介绍:冲突的概念案例介绍解决冲突  冲突的概念git在使用中,如果遵循了它的使用的步骤,比如,在上班之前先去拉取,下班的时候,先提......
  • 5分钟背驰将产生3-6个交易日的调整
     上证指数和创业板指数从5分钟走势结构来看,5分钟背驰已经确认成立,5分钟上产生背驰,至少会产生5分钟线段的调整,从调整时间上来看,时间大概是3-6个交易日,正好从侧面......
  • Go语言产生随机数
    funcmain(){//产生随机数,设置种子,种子参数一样,每次程序重新运行的随机数都一样rand.Seed(666)fori:=0;i<5;i++{fmt.Println(rand.Int())//产生很大的......
  • 使用 display:inline-block 会产生什么问题?有什么解决方法?
    1.产生的问题描述两个display为inline-block元素放到一起会产生一段空白。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Com......
  • 最容易产生大额欠费的云产品
    CDN产品:CDN系列产品.包括先上图:该用户使用云业务的测试时候开通了ECDN产品,配置后一直没有使用,后面业务也没使用,因为服务器是年付的,账号里面还有一些余额,就一......