题目链接:https://ac.nowcoder.com/acm/problem/213759
到主站看:https://blog.csdn.net/weixin_43346722/article/details/110144704
题目
你和你的朋友参加了一场考试,试卷由 道判断题构成
你的朋友通过 py 提前得知了他错了 道题,而你只能和你的朋友对答案
请问你最多能对几道题
输入
第一行,两个整数 ,意义与题目描述中一致
第二行 个整数,表示你的答案
第三行 个整数,表示朋友的答案
输出
一行一个整数,表示最多能对几题
样例输入
3 1 1 0 1 0 0 1
样例输出
3
数据范围
判断题答案只包含
思路
这道题是一道贪心。
首先,我们可以看出,如果两个人的答案不一样,我们肯定是让别人错,我们对。
那如果两个人的答案一样,就肯定是两个人都对。
那这时候问题来了,因为别人错的题目数量有限制,那可能会有这两种情况:
- 按上面的算别人错的没有你算的那么多,那就说多出来的就一定是你错了别人对了
- 按上面的算别人错的没有你算的那么少,那就是缺的就是两个人都错了而不是两个人都对了。
然后分别处理一下,就可以了。
代码
#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; }