首页 > 试题广场 >

赛马

[编程题]赛马
  • 热度指数:1288 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

茉莉有2n匹马,每匹马都有一个速度v,现在茉莉将马分为两个队伍,每个队伍各有n匹马,两个队之间进行n场比赛,每场比赛两队各派出一匹马参赛,每匹马都恰好出场一次。茉莉想知道是否存在一种分配队伍的方法使得无论怎么安排比赛,第一个队伍都一定能获的全胜,两匹马若速度不同,那么速度快的获胜,若速度一样,则都有可能获胜。


输入描述:
第一行一个数T(T<=100),表示数据组数。

对于每组数据,第一行一个整数n , (1<=n<=100)

接下来一行,2*n个整数,第i个整数vi表示第i匹马的速度, (1
<= vi <= 1000)


输出描述:
对于每组数据,输出一行,若存在一种分配方法使得第一个队伍全胜输出YES,否则输出NO
示例1

输入

2
2
1 2 3 4
1
1 1

输出

YES
NO
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/*
***有2n匹马,每匹马都有一个速度v,现在***将马分为两个队伍,每个队伍各有n匹马,两个队之间进行n场比赛,
每场比赛两队各派出一匹马参赛,每匹马都恰好出场一次。***想知道是否存在一种分配队伍的方法使得无论怎么安排比赛,
第一个队伍都一定能获的全胜,两匹马若速度一样,那么速度快的获胜,若速度一样,则都有可能获胜。
2
2
1 2 3 4
1
1 1
YES
NO
 */
public class Main {
      public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        String[] aa=new String[a];
        for(int i=0;i<a;i++){
            int b=sc.nextInt();
            int[] input=new int[2*b];

            for(int j=0;j<2*b;j++){
                input[j]=sc.nextInt();
            }
            Arrays.sort(input);
            for(int t=0;t<2*b-1;t++){
                for(int n=t+1;n<2*b;n++){
                    if(input[t]==input[n]){
                        aa[i]="NO";
                        continue;
                    }
                }
            }
            if(aa[i]==null){
                aa[i]="YES";
            }


        }
        for(int z=0;z<a;z++){
            System.out.println(aa[z]);
        }


    }
}
如果比较是否有重复值可能存在一种情况就是,重复的数字不在中间。

发表于 2019-08-17 11:39:11 回复(0)