考试

考试 ⁡ \operatorname{考试}

题目链接: nowcoder 213759 ⁡ \operatorname{nowcoder\ 213759} nowcoder 213759

到牛客看:

——>点我跳转<——

题目

你和你的朋友参加了一场考试,试卷由 n n n 道判断题构成

你的朋友通过 py 提前得知了他错了 k k k 道题,而你只能和你的朋友对答案

请问你最多能对几道题

输入

第一行,两个整数 n , k n,k n,k ,意义与题目描述中一致

第二行 n n n 个整数,表示你的答案

第三行 n n n 个整数,表示朋友的答案

输出

一行一个整数,表示最多能对几题

样例输入

3 1
1 0 1
0 0 1

样例输出

3

数据范围

0 ≤ k ≤ n ≤ 1000 0\leq k\leq n\leq 1000 0kn1000

判断题答案只包含 0 / 1 0/1 0/1

思路

这道题是一道贪心。

首先,我们可以看出,如果两个人的答案不一样,我们肯定是让别人错,我们对。
那如果两个人的答案一样,就肯定是两个人都对。

那这时候问题来了,因为别人错的题目数量有限制,那可能会有这两种情况:

  1. 按上面的算别人错的没有你算的那么多,那就说多出来的就一定是你错了别人对了
  2. 按上面的算别人错的没有你算的那么少,那就是缺的就是两个人都错了而不是两个人都对了。

然后分别处理一下,就可以了。

代码

#include<cstdio>

using namespace std;

int n, k, a[1001], x, ans;

int main() {
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	
	for (int i = 1; i <= n; i++) {
		scanf("%d", &x);
		if (a[i] != x) {//不一样
			if (k) {//你算出来别人错的一定不能超过别人真正错的
				k--;
				ans++;
			}
		}
		else ans++;//一样
	}
	
	printf("%d", ans - k);//要减去一样的也一定要错的题
	
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值