CodeForces 370C
2013-12-08 14:55
141 查看
这道题其实是挺简单的。首先很容易发现最多人用的颜色的人数如果大于n/2,就肯定不能让全部人都成功戴上两只不同颜色的手套。反过来想,如果这个人数小于等于n/2又如何呢?的确,这就能让全部人都能戴上两只不同颜色的手套(每个人都留一只自己原本的,再要别人的一只手套就可以了)。
#include <iostream> #include <cmath> #include <algorithm> #include <bitset> #include <cstring> #include <list> using namespace std; struct Child{ int color, num, mat; }; bool partition_cmp(const Child& c1, const Child& c2){ return c1.color < c2.color; } bool sort_cmp(const Child& c1, const Child& c2){ return c1.num < c2.num; } int main(){ int n, m; Child a[5000]; int c[101]; cin >> n >> m; for (int i = 1; i <= m; i++){ c[i] = 0; } for (int i = 0; i < n; i++){ cin >> a[i].color; a[i].num = i; c[a[i].color]++; } int mx = 0; for (int i = 1; i <= m; i++){ if (c[mx] < c[i]){ mx = i; } } if (c[mx] * 2 > n){ cout << 2 * (n - c[mx]) << endl; int mcount = 0, miter = -1, d = n - c[mx]; for (int i = 0; i < n; i++){ if (a[i].color == mx){ cout << a[i].color << " "; if (d > 0){ for (miter++; miter < n && a[miter].color == mx; miter++); cout << a[miter].color << endl; d--; } else{ cout << a[i].color << endl; } } else{ cout << a[i].color << " " << mx << endl; } } } else{ cout << n << endl; sort(a, a + n, partition_cmp); for (int i = 0; i < n; i++){ a[i].mat = a[(i + c[mx]) % n].color; } sort(a, a + n, sort_cmp); for (int i = 0; i < n; i++){ cout << a[i].color << " " << a[i].mat << endl; } } return 0; }
相关文章推荐
- 【codeforces 370C】Mittens
- CodeForces 370C. Mittens
- CodeForces 215E Periodical Numbers 数位DP
- codeforces 390C Inna and Candy Boxes
- Codeforces 682D Alyona and Strings(DP)
- CodeForces 742C Arpa's loud Owf and Mehrdad's evil plan
- Codeforces - 715B. Complete The Graph - 构造最短路
- codeforces -891B Gluttony 排列,构造题
- codeforces 401D (数位DP)
- Codeforces 598E Chocolate Bar
- codeforces 659 G. Fence Divercity 组合数学 dp
- 【codeforces 246D Colorful Graph 】+ set
- CodeForces 25D Roads not only in Berland
- CodeForces - 892 C - Pride【GCD思维】
- codeforces 260 div2 B题
- Codeforces 598D Igor In the Museum 【DFS】
- codeforces 361 D - Friends and Subsequences
- CodeForces 739C Alyona and towers
- CodeForces 367B. Sereja ans Anagrams(经典STL)
- codeforces 892 A题 Greed