【解题报告】Codeforces Round #402 (Div. 2)
来源:互联网 发布:win7 无法连接到网络 编辑:程序博客网 时间:2024/05/29 14:09
题目连接
A. Pupils Redistribution(Codeforces 779A)
思路
要让两个组得分数
代码
#include <bits/stdc++.h>using namespace std;const int maxn = 110;int n, foo, da, db, a[maxn], b[maxn], c[maxn];int main() {// freopen("Input5.txt", "r", stdin); ios::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 1; i <= n; i++) { cin >> foo; a[foo]++; c[foo]++; } for(int i = 1; i <= n; i++) { cin >> foo; b[foo]++; c[foo]++; } for(int i = 1; i <= 5; i++) { if(c[i] % 2 == 1) { puts("-1"); return 0; } c[i] /= 2; } for(int i = 1; i <= 5; i++) { da += abs(a[i] - c[i]); db += abs(b[i] - c[i]); } if(da != db || da % 2 == 1) { puts("-1"); return 0; } cout << da / 2 << endl; return 0;}
B. Weird Rounding(Codeforces 779B)
思路
从最低位向最高位遍历
代码
#include <bits/stdc++.h>using namespace std;string s;int k, a, b;int main() {// freopen("Input3.txt", "r", stdin); ios::sync_with_stdio(false); cin.tie(0); cin >> s >> k; for(int i = s.size() - 1; i >= 0; i--) { if(s[i] == '0') { a++; } else { b++; } if(a == k) { cout << b << endl; return 0; } } cout << s.size() - 1 << endl; return 0;}
C. Dishonest Sellers(Codeforces 779C)
思路
因为
代码
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e5 + 10;int n, k, p, q, cnt, a[maxn], b[maxn];ll ans;struct item { int a, b; item() {} item(int a, int b): a(a), b(b) {} bool operator < (const item& o) const { return (a - b) < (o.a - o.b); }}items[maxn];int main() {// freopen("Input2.txt", "r", stdin); ios::sync_with_stdio(false); cin.tie(0); cin >> n >> k; for(int i = 1; i <= n; i++) { cin >> a[i]; } for(int i = 1; i <= n; i++) { cin >> b[i]; } for(int i = 1; i <= n; i++) { items[i] = item(a[i], b[i]); } sort(items + 1, items + n + 1); for(int i = 1; i <= n; i++) { p = items[i].a; q = items[i].b; if(p <= q) { ans += p; cnt++; } else if(cnt >= k) { ans += q; } else { ans += p; cnt++; } } cout << ans << endl; return 0;}
D. String Game(Codeforces 779D)
思路
求最优解的问题。乍一看没什么贪心的思路。数据规模提示我们可能可以用二分法解决。于是二分最大的删除次数
代码
#include <bits/stdc++.h>using namespace std;const int maxn = 2e5 + 5;string t, p;int l, r, mid, idx, deadLine[maxn];bool ok(int x) { int j = 0; for(int i = 0; i < t.size(); i++) { if(deadLine[i] > x) { if(t[i] == p[j] && ++j >= p.size()) { return true; } } } return false;}int main() {// freopen("Input2.txt", "r", stdin); ios::sync_with_stdio(false); cin.tie(0); cin >> t >> p; for(int i = 0; i < t.size(); i++) { cin >> idx; deadLine[idx - 1] = i + 1; } l = 0; r = t.size(); while(r - l > 1) { mid = (l + r) >> 1; if(ok(mid)) { l = mid; } else { r = mid; } } cout << l << endl; return 0;}
(其它题目略)
0 0
- 【解题报告】Codeforces Round #402 (Div. 2)
- Codeforces Round #149 (Div. 2)解题报告
- Codeforces Round #180 (Div. 2) 解题报告
- Codeforces Round #190 (Div. 2) 解题报告
- Codeforces Round #191 (Div. 2) 解题报告
- Codeforces Round #189 (Div. 2) 解题报告
- Codeforces Round #142 (Div. 2) 解题报告
- Codeforces Round #229 (Div. 2) 解题报告
- Codeforces Round #241 (Div. 2) 解题报告
- Codeforces Round #262 (Div. 2)解题报告
- Codeforces Round #267 (Div. 2) 解题报告
- Codeforces Round #266 (Div. 2)解题报告
- Codeforces Round #268 (Div. 2) 解题报告
- Codeforces Round #271 (Div. 2) 解题报告
- Codeforces Round #274 (Div. 2) 解题报告
- Codeforces Round #276 (Div. 2) 解题报告
- Codeforces Round #277 (Div. 2) 解题报告
- Codeforces Round #224 (Div. 2)解题报告
- mysql 存储函数
- js json字符串转对象
- 应用系统安全管理
- Jquery Ajax 传递对象数组
- 『状态』驱动的世界:ReactiveCocoa
- 【解题报告】Codeforces Round #402 (Div. 2)
- 仔细认识c++ 中pointers和references。
- 约瑟夫环_循环单链表
- log4j2.x日志按日期分隔
- 剑指offer12:打印1到最大的n位数
- Java开发中的23种设计模式详解(转)
- Google C++Style Guide【C++编程风格指南解读】——命名约定
- Mysql Connector(C++)的数据库连接池的实现
- 209. Minimum Size Subarray Sum(unsolved)