Codeforces Round 923 (Div. 3) C. Choose the Different Ones(Java)

比赛链接:Round 923 (Div. 3)

C题传送门:C. Choose the Different Ones!

题目:

** Example**

** input**

复制代码
6
6 5 6
2 3 8 5 6 5
1 3 4 10 5
6 5 6
2 3 4 5 6 5
1 3 8 10 3
3 3 4
1 3 5
2 4 6
2 5 4
1 4
7 3 4 4 2
1 4 2
2
6 4 4 2
1 5 2
3
2 2 1 4 3

output

复制代码
YES 
NO
YES
YES
NO
NO

分析:

题目要我们判断从a[i]和b[i]中分别选k/2个元素,以便所选元素包含从 1 到 k 的每个整数。

我们可以定义3个变量cnt0,cnt1,com,每个相同数字只计算一次,cnt0是只存在 a[i]中1-k整数的个数,cnt1是只存在 b[i]中1-k整数的个数,com是共同存在a[i]和b[i]中1-k整数的个数。

定义二维数组b[k+10][2],b[i][0]记录a[i]中1-k整数是否存在,b[i][1]记录b[i]中1-k整数是否存在,当b[i][0]==b[i][1]=1时,说明有共同的数。

最后我们通过cnt0,cnt1,com,k的数量关系可以判断结果。

代码:

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {   
    	Scanner sc = new Scanner(System.in);
    	int tt = sc.nextInt();
    	while(tt-->0) {
    		int n = sc.nextInt();
    		int m = sc.nextInt();
    		int k = sc.nextInt();
    		int [][] b = new int [k+10][2];
    		int cnt0 = 0;int cnt1 = 0;int com = 0;
    		for(int i = 0;i < n;i++) {
    			int t = sc.nextInt();
    			if(t<=k&&b[t][0]==0) {
    				b[t][0]=1;cnt0++;
    			}
    		}
    		//System.out.println(cnt0);
    		for(int i = 0;i < m;i++) {
    			int t = sc.nextInt();
    			if(t<=k&&b[t][1]==0) {
    				b[t][1]=1;cnt1++;
    				if(b[t][0]==1) {
    					cnt0--;cnt1--;com++;
    				}
    			}
    		}
    		//System.out.println(cnt0+" "+cnt1+" "+com);
    		if(cnt0+com<k/2||cnt1+com<k/2||cnt1+cnt0+com<k) {
    			System.out.println("NO");
    		}else if(com>0&&cnt0+com==k/2&&cnt1+com==k/2) {
    			System.out.println("NO");
    		}else {
    			System.out.println("YES");
    		}
    	}
    }
}
相关推荐
melck几秒前
liunx日志查询常用命令总结
java·服务器·网络
SweetCode3 分钟前
裴蜀定理:整数解的奥秘
数据结构·python·线性代数·算法·机器学习
守护者1706 分钟前
JAVA学习-练习试用Java实现“实现一个Hadoop程序,使用Hive进行复杂查询和数据筛查”
java·学习
程序员 小柴11 分钟前
docker的与使用
java·docker·eureka
ゞ 正在缓冲99%…16 分钟前
leetcode76.最小覆盖子串
java·算法·leetcode·字符串·双指针·滑动窗口
xuanjiong17 分钟前
纯个人整理,蓝桥杯使用的算法模板day2(0-1背包问题),手打个人理解注释,超全面,且均已验证成功(附带详细手写“模拟流程图”,全网首个
算法·蓝桥杯·动态规划
Seven9730 分钟前
【Guava】并发编程ListenableFuture&Service
java
WannaRunning31 分钟前
浅谈Tomcat数据源连接池
java·oracle·tomcat
惊鸿.Jh36 分钟前
【滑动窗口】3254. 长度为 K 的子数组的能量值 I
数据结构·算法·leetcode
明灯L37 分钟前
《函数基础与内存机制深度剖析:从 return 语句到各类经典编程题详解》
经验分享·python·算法·链表·经典例题