The 14th Zhejiang Provincial Collegiate Programming Contest (待续)
来源:互联网 发布:淘宝卖衣服规则 编辑:程序博客网 时间:2024/05/17 00:59
期中考啊啊啊啊啊= =
待续。
A.Cooking Competition
#include <bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d", &T); while(T--) { int n; scanf("%d", &n); int ans = 0; while(n--) { int x; scanf("%d", &x); if(x == 1) ans+=1; else if(x == 2) ans -=1; } if(ans > 0) { puts("Kobayashi"); } else if(ans < 0) { puts("Tohru"); } else puts("Draw"); } return 0;}
B.Problem Preparation
#include <bits/stdc++.h>using namespace std;const int maxn = 1e4 + 5;int T, n;int a[maxn];bool solve(){ if(n < 10 || n > 13) return false; if(a[1] != 1 || a[2] != 1) return false; int hardest = a[n]; for(int i = 3; i <= n; i++) { if(a[i] == hardest) continue; if(a[i] - a[i - 1] > 2) return false; } return true;}int main(){ scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); } sort(a + 1, a + 1 + n); if(solve()) puts("Yes"); else puts("No"); } return 0;}
C.What Kind of Friends Are You?
#include <bits/stdc++.h>using namespace std;int has[(1 << 21) + 5];int main(){ int T; scanf("%d", &T); while(T--) { int n, q; scanf("%d%d", &n, &q); int c; scanf("%d", &c); map<string, int>ma; map<int, string>rever; for(int i = 1; i <= c; i++) { string name; cin >> name; ma[name] = i; rever[i] = name; } memset(has, 0, sizeof(has)); for(int i = 1; i <= q; i++) { int num; scanf("%d", &num); while(num--) { string s; cin >> s; int id = ma[s]; has[id] += (1 << i); } } map<int, vector<string>>vec; for(int i = 1; i <= c; i++) { vec[has[i]].push_back(rever[i]); } for(int i = 1; i <= n; i++) { int temp = 0; for(int i = 1; i <= q; i++) { int x; scanf("%d", &x); if(x) temp += (1 << i); } if(vec[temp].size() == 1) { cout << vec[temp][0] << "\n"; } else puts("Let's go to the library!!"); } } return 0;}
D.Let's Chat
#include <bits/stdc++.h>using namespace std;int sorted[410];bool isAL[410], isBL[410], isAR[410], isBR[410];pair<int, int> a[110], b[110];int main(){ int t; scanf("%d", &t); while (t--) { int n, m, x, y, l, r; int cnt = 0; scanf("%d%d%d%d", &n, &m, &x, &y); for (int i = 0; i < x; i++) { scanf("%d%d", &l, &r); sorted[cnt++] = l; sorted[cnt++] = r; a[i] = {l, r}; } for (int i = 0; i < y; i++) { scanf("%d%d", &l, &r); sorted[cnt++] = l; sorted[cnt++] = r; b[i] = {l, r}; } sort(sorted, sorted + cnt); cnt = unique(sorted, sorted + cnt) - sorted; memset(isAL, false, sizeof(isAL)); memset(isBL, false, sizeof(isBL)); memset(isAR, false, sizeof(isAR)); memset(isBR, false, sizeof(isBR)); for (int i = 0; i < x; i++) { a[i].first = lower_bound(sorted, sorted + cnt, a[i].first) - sorted; a[i].second = lower_bound(sorted, sorted + cnt, a[i].second) - sorted; isAL[a[i].first] = true; isAR[a[i].second] = true; } for (int i = 0; i < y; i++) { b[i].first = lower_bound(sorted, sorted + cnt, b[i].first) - sorted; b[i].second = lower_bound(sorted, sorted + cnt, b[i].second) - sorted; isBL[b[i].first] = true; isBR[b[i].second] = true; } int c = 0; int st = -1; long long ans = 0; for (int i = 0; i < cnt; i++) { if (isAL[i]) c++; if (isBL[i]) c++; if (c == 2 && st == -1) st = i; if (isAR[i]) c--; if (isBR[i]) c--; if (c != 2 && st != -1) { int len = sorted[i] - sorted[st] + 1; if (len >= m) ans += len - m + 1; st = -1; } } printf("%lld\n", ans); } return 0;}
E.Seven Segment Display
#include <bits/stdc++.h>using namespace std;const long long mx = (1LL << 32) - 1;int cost[128];int v[128];void init(){ cost[0] = 6; cost[1] = 2; cost[2] = 5; cost[3] = 5; cost[4] = 4; cost[5] = 5; cost[6] = 6; cost[7] = 3; cost[8] = 7; cost[9] = 6; cost[10] = 6; cost[11] = 5; cost[12] = 4; cost[13] = 5; cost[14] = 5; cost[15] = 4; for (int i = '0'; i <= '9'; i++) v[i] = i - '0'; for (int i = 'A'; i <= 'F'; i++) v[i] = i - 'A' + 10;}long long trans(const string hex){ long long ans = 0; for (int i = 0; i < hex.length(); i++) ans = ans * 16 + v[hex[i]]; return ans;}string rtrans(long long x){ string ans; while (x) { int d = x % 16; if (d < 10) ans += '0' + d; else ans += 'A' + d - 10; x /= 16; } reverse(ans.begin(), ans.end()); while (ans.length() < 8) ans = "0" + ans; return ans;}long long calc(string x){ long long cnt[16]; memset(cnt, 0, sizeof(cnt)); for (int i = 0; i < x.length(); i++) { long long a, b, c; a = trans(x.substr(0, i)); b = trans(x.substr(i + 1)); string r = ""; for (int k = i + 1; k < x.length(); k++) r += "F"; c = trans(r); for (int j = 0; j < 16; j++) { if (j < v[x[i]]) cnt[j] += (a + 1) * (c + 1); else if (j == v[x[i]]) { cnt[j] += a * (c + 1); cnt[j] += b + 1; } else cnt[j] += a * (c + 1); } } long long ans = 0; for (int i = 0; i < 16; i++) ans += cost[i] * cnt[i]; return ans;}int main(){ init(); int t; scanf("%d", &t); while (t--) { int n; char s[16]; scanf("%d%s", &n, s); string st; st.assign(s); long long nst = trans(st); long long ned = nst + n - 1; if (ned <= mx) { if (nst == 0) printf("%lld\n", calc(rtrans(ned))); else printf("%lld\n", calc(rtrans(ned)) - calc(rtrans(nst - 1))); } else { long long ans = 0; ans += calc("FFFFFFFF") - calc(rtrans(nst - 1)); ned -= mx + 1; ans += calc(rtrans(ned)); printf("%lld\n", ans); } } return 0;}
F.Heap Partition
#include <bits/stdc++.h>using namespace std;int fa[100005];int deg[100005];vector<int> tree[100005];set<int> ids;bool vis[100005];void dfs(int cur){ vis[cur] = true; ids.insert(cur); for (auto o : tree[cur]) dfs(o);}int main(){ int t; scanf("%d", &t); while (t--) { int n, v; scanf("%d", &n); set<pair<int, int>> ms; for (int i = 1; i <= n; i++) { tree[i].clear(); deg[i] = fa[i] = vis[i] = 0; } int ans = 0; for (int i = 1; i <= n; i++) { scanf("%d", &v); set<pair<int, int>>::iterator it = ms.upper_bound({v, i}); if (it == ms.begin()) ms.insert({v, i}), ans++; else { it--; fa[i] = it->second; deg[it->second]++; ms.insert({v, i}); if (deg[it->second] == 2) ms.erase(it); } } for (int i = 1; i <= n; i++) if (fa[i] != 0) tree[fa[i]].push_back(i); printf("%d\n", ans); for (int i = 1; i <= n; i++) { if (!vis[i]) { ids.clear(); dfs(i); printf("%d", ids.size()); for (auto o : ids) printf(" %d", o); puts(""); } } } return 0;}
0 0
- The 14th Zhejiang Provincial Collegiate Programming Contest (待续)
- The 13th Zhejiang Provincial Collegiate Programming Contest (杂谈)
- The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple(A+B+C+D)
- The 7th Zhejiang Provincial Collegiate Programming Contest
- The 6th Zhejiang Provincial Collegiate Programming Contest
- The 8th Zhejiang Provincial Collegiate Programming Contest / L - Javabeans
- The 8th Zhejiang Provincial Collegiate Programming Contest / M - Median
- The 8th Zhejiang Provincial Collegiate Programming Contest
- The 9th Zhejiang Provincial Collegiate Programming Contest
- The 5th Zhejiang Provincial Collegiate Programming Contest 部分题解
- The 10th Zhejiang Provincial Collegiate Programming Contest Solution
- The 11th Zhejiang Provincial Collegiate Programming Contest---Talented Chef
- The 11th Zhejiang Provincial Collegiate Programming Contest
- The 11th Zhejiang Provincial Collegiate Programming Contest
- The 11th Zhejiang Provincial Collegiate Programming Contest
- The 11th Zhejiang Provincial Collegiate Programming Contest
- The 12th Zhejiang Provincial Collegiate Programming Contest
- The 12th Zhejiang Provincial Collegiate Programming Contest - A
- 计数dp
- 奇葩问题
- 人员薪资计算架构
- 盈鹏飞嵌入式--EVB335X-II SPI Flash启动说明
- git使用总结报错解决方法
- The 14th Zhejiang Provincial Collegiate Programming Contest (待续)
- Linux CentOS MySQL 5.7.18 5.7.X安装教程
- 使用spring配合Junit进行单元测试的总结
- http请求 get post 方式
- Linux下passwd和shadow文件
- Android Messenger 简介
- Linux中shell编程需要避免的坑之shell语法篇(四)
- 修改App名称
- 51nod_1029 大数除法