CF 779A Pupils Redistribution 模拟,水题
2017-03-06 16:50
295 查看
题目链接:见这里
题意:给了两个数组a, b。现在你可以交换a,b数组的任意两个数,问最少交换多少次,可以让a,b数组里面每个数的出现次数相同,不能达到上述状态输出”-1”。其中a,b数组里面每个数是1-5.
解法:模拟,想想就可以知道如果对于1-5这每个数,如果出现次数之和为奇数那么肯定不能达到目标。否则答案就是就是所有数出现次数的差除以2之和,并且最后答案再除以2。不这样计算,直接贪心模拟也是可以的。
题意:给了两个数组a, b。现在你可以交换a,b数组的任意两个数,问最少交换多少次,可以让a,b数组里面每个数的出现次数相同,不能达到上述状态输出”-1”。其中a,b数组里面每个数是1-5.
解法:模拟,想想就可以知道如果对于1-5这每个数,如果出现次数之和为奇数那么肯定不能达到目标。否则答案就是就是所有数出现次数的差除以2之和,并且最后答案再除以2。不这样计算,直接贪心模拟也是可以的。
//CF 779A #include <bits/stdc++.h> using namespace std; const int maxn = 100; int n, x, cnt1[6], cnt2[6]; int main(){ scanf("%d", &n); for(int i = 1; i <= n; i++){ int x; scanf("%d", &x); cnt1[x]++; } for(int i = 1; i <= n; i++){ int x; scanf("%d", &x); cnt2[x]++; } for(int i = 1; i <= 5; i++){ if((cnt1[i]+cnt2[i])&1){ puts("-1"); return 0; } } int ans = 0; for(int i = 1; i <= 5; i++){ ans += abs(cnt1[i] - cnt2[i]) / 2; } ans /= 2; printf("%d\n", ans); return 0; }
相关文章推荐
- CF 501B Misha and Changing Handles 模拟,水题
- POJ1573,Robot Motion,模拟水题,繁
- CF#322-D. Three Logos-模拟水题
- Codeforces--616A--Comparing Two Long Integers(模拟水题)
- CF 17B 水题
- Heidi and Library (easy)(cf5.18团队赛模拟水题)
- Codeforces AIM Tech Round 3 (Div.2)A.Juicer【模拟】水题
- POJ-1573 Robot Motion 模拟水题
- cf水题:1A Theatre Square
- CF 372D Dijkstra+模拟
- HDU 1056 HangOver 模拟 水题
- POJ 1068:Parencodings:模拟水题
- poj 2552 模拟水题
- ZJU 1180 Self Numbers(暴力模拟判断,水题)
- CF 792 B. Counting-out Rhyme(水题)
- CF 792D - Paths in a Complete Binary Tree lowbit,模拟
- 【打CF,学算法——二星级】CodeForces 689A Mike and Cellphone (模拟)
- CodeForces 339B Xenia and Ringroad(水题模拟)
- Codeforces Round #316 (Div. 2)-A. Elections-模拟水题22
- codeforces 435A Queue on Bus Stop(模拟水题)