考试
题目描述
你和你的朋友参加了一场考试,试卷由 n 道判断题构成
你的朋友通过 py 提前得知了他错了 k 道题,而你只能和你的朋友对答案
请问你最多能对几道题
输入描述:
第一行,两个整数 n,k ,意义与题目描述中一致
第二行 n 个整数,表示你的答案
第三行 n 个整数,表示朋友的答案
输出描述:
一行一个整数,表示最多能对几题
示例1
输入
3 1
1 0 1
0 0 1
输出
3
说明
- 0 ≤ k ≤ n ≤ 1000 0 \leq k \leq n \leq 1000 0≤k≤n≤1000
判断题答案 只包含0 / 1
思路:贪心思想 |
分析
- m i n ( n − k , s a m e ) + m i n ( k , n − s a m e ) min(n-k,same) + min(k,n-same) min(n−k,same)+min(k,n−same)
- 错了k道,剩余n-k道是对的,相同的题目尽量让它是对的;不相同的题目(朋友错了,而我和朋友不相同的题目是对的)
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1005;
int a[N],b[N],n,k,same;
void solve(){
cin>>n>>k;
same = 0;
for(int i = 0; i < n;i++) cin>>a[i];
for(int i = 0; i < n;i++) {
cin>>b[i]; if(a[i] == b[i]) same++;
}
cout<< min(n-k,same) + min(k,n-same) << endl;
}
int main(){
solve();
return 0;
}