7-1 重要的话说三遍
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { cout << "I'm gonna WIN!\nI'm gonna WIN!\nI'm gonna WIN!"; #ifndef ONLINE_JUDGE system("pause"); #endif }
7-2 后天
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int n = read(); cout << ((n + 2) % 7 == 0 ? 7 : (n + 2) % 7); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-3 大笨钟
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 +7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 +7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int h = read() - 12, m = read(); if(h < 0 || (h == 0 && m == 0)) printf("Only %02d:%02d. Too early to Dang.", h + 12, m); else { if(m != 0) h ++; for(int i = 0; i < h; ++ i) cout << "Dang"; } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-4 奇偶分家
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int n = read(), odd = 0, even = 0; while(n --) { int input = read(); if(input & 1) odd ++; else even ++; } cout << odd << ' ' << even; #ifndef ONLINE_JUDGE system("pause"); #endif }
7-5 到底有多二
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { string input; cin >> input; double t1 = 1, t2 = 1, even = 0; int len = input.length(), i = 0; if(input[0] == '-') t1 += 0.5, i = 1; if(input[len - 1] % 2 == 0) t2 ++; for(; i < len; ++i) { if (input[i] == '2') even++; } if(input[0] == '-') len --; printf("%.2f%%", even / len * t1 * t2 * 100); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-6 谁先倒
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 +7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 +7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int a = read(), b = read(), n = read(), c = 0, d = 0; while(n --) { int a1 = read(), b1 = read(), a2 = read(), b2 = read(); if(a1 + a2 == b1 && b1 == b2) continue; else if(a1 + a2 == b1) c ++; else if(a1 + a2 == b2) d ++; if(c > a) { cout << "A\n" << d; break; } if(d > b) { cout << "B\n" << c; break; } } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-7 帅到没朋友
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int N = read(); map<int, bool> mp; while(N --) { int M = read(); if(M == 1) { int tmp = read(); } else { for(int i = 0; i < M; ++ i) { int tmp = read(); mp[tmp] = 1; } } } int M = read(); vector<int> ans; while(M --) { int input = read(); if(mp.find(input) == mp.end()) { mp[input] = 1; ans.emplace_back(input); } } if(ans.size() == 0) cout << "No one is handsome"; else for(int i = 0; i < ans.size(); ++ i) cout << setw(5) << setfill('0') << ans[i] << (i + 1 == ans.size() ? "" : " "); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-8 输出GPLT
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { string str; cin >> str; int len = str.length(), G = 0, P = 0, L = 0, T = 0; for(int i = 0; i < len; ++ i) { char tmp = toupper(str[i]); if(tmp == 'G') G ++; else if(tmp == 'P') P ++; else if(tmp == 'L') L ++; else if(tmp == 'T') T ++; } while(G + P + L + T != 0) { if(G) G --, cout << 'G'; if(P) P --, cout << 'P'; if(L) L --, cout << 'L'; if(T) T --, cout << 'T'; } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-9 抢红包
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int ord[MAXNe5], num[MAXNe5], mon[MAXNe5]; bool cmp(int a, int b) { if(num[a] == num[b] && mon[a] == mon[b]) return a < b; else if(mon[a] == mon[b]) return num[a] > num[b]; else return mon[a] > mon[b]; } int main() { int n = read(); for(int i = 1; i <= n; ++ i) { ord[i] = i; int k = read(), sum = 0; for(int _ = 0; _ < k; ++ _) { int tmp1 = read(), tmp2 = read(); num[tmp1] ++; mon[tmp1] += tmp2; sum += tmp2; } mon[i] -= sum; } sort(ord + 1, ord + n + 1, cmp); for(int i = 1; i <= n; ++ i) { printf("%d %.2f\n", ord[i], mon[ord[i]] / 100.0); } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-10 排座位
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int fa[1007], rel[107][107]; void init(int x) { for(int i = 0; i <= x; ++ i) fa[i] = i; } int find(int x) { return x == fa[x] ? x : fa[x] = find(fa[x]); } int main() { int n = read(), m = read(), k = read(); memset(rel, 0, sizeof(rel)); init(n); for(int i = 0; i < m; ++ i) { int a = read(), b = read(), relation = read(); if(relation == 1) { int fa1 = find(a), fb1 = find(b); if(fa1 != fb1) fa[fa1] = fb1; } else { rel[min(a, b)][max(a, b)] = 1; } } for(int i = 0; i < k; ++ i) { int a = read(), b = read(); bool res1 = (find(a) == find(b)), res2 = (rel[min(a, b)][max(a, b)]); if(res1) { if(res2) puts("OK but..."); else puts("No problem"); } else { if(res2) puts("No way"); else puts("OK"); } } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-11 玩转二叉树
#include <bits/stdc++.h> #define lson (rt->lchild) #define rson (rt->rchild) using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie typedef struct BiTrNode { int data; BiTrNode *lchild, *rchild; } BiTrNode; int find(int x, int num[], int len) { for(int i = 0; i < len; ++ i) if(x == num[i]) return i; } BiTrNode *build(int input1[], int input2[], int len) { if(len <= 0) return NULL; BiTrNode *rt = new BiTrNode; rt -> data = input2[0]; int m = find(input2[0], input1, len); lson = build(input1 + m + 1, input2 + m + 1, len - m - 1); rson = build(input1, input2 + 1, m); return rt; } void reverse(BiTrNode *rt) { if(rt == NULL) return; BiTrNode *tmp = lson; lson = rson; rson = tmp; if(lson) reverse(lson); if(rson) reverse(rson); } BiTrNode *que[1007]; int ans[1007], Qf = 0, Qr = 0, cnt = 0; void bfs(BiTrNode *rt) { que[Qr ++] = rt; while (Qf != Qr) { BiTrNode *rt = que[Qf ++]; ans[cnt ++] = rt->data; if(lson) que[Qr ++] = lson; if(rson) que[Qr ++] = rson; } for(int i = 0; i < cnt; ++ i) cout << ans[i] << ((i + 1 == cnt) ? "" : " "); } int main() { int input1[1007], input2[1007], n = read(); for(int i = 0; i < n; ++ i) input1[i] = read(); for(int i = 0; i < n; ++ i) input2[i] = read(); BiTrNode *rt = build(input1, input2, n); bfs(rt); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-12 关于堆的判断
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int H[MAXNe5], cnt = 0; void insert(int x) { H[++ cnt] = x; int now = cnt; while(now) { if(H[now >> 1] > H[now]) swap(H[now >> 1], H[now]); else break; now >>= 1; } } int main() { int n = read(), m = read(); memset(H, 0, sizeof(H)); H[0] = -mod; for(int i = 0 ; i < n; ++ i) { int tmp = read(); insert(tmp); } unordered_map<int, int> ump; for(int i = 1; i <= cnt; ++ i) ump[H[i]] = i; for(int i = 0; i < m; ++ i) { int num1, num2; string tmp[10]; cin >> num1 >> tmp[0]; if(tmp[0] == "and") { cin >> num2 >> tmp[1] >> tmp[2]; if(ump[num1] / 2 == ump[num2] / 2) puts("T"); else puts("F"); } else { cin >> tmp[1]; if(tmp[1] == "the") { cin >> tmp[2]; if(tmp[2] == "root") { if(ump[num1] == 1) puts("T"); else puts("F"); } else { cin >> tmp[3] >> num2; if(ump[num2] / 2 == ump[num1]) puts("T"); else puts("F"); } } else { cin >> tmp[2] >> tmp[3] >> num2; if(ump[num1] / 2 == ump[num2]) puts("T"); else puts("F"); } } } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-13 天梯地图
最短路,Dijkstra。记录方案可以采用数组记录当前点到上一个点的下标。需要注意边的放缩条件,计算最短路长时,最短路长相等的时候需要更新经过的最小节点个数;计算最短时间时,最短时间相等时更新经过的最短距离。输出答案时,从终点回跳,将答案压入栈依次输出,或顺序记录后倒序输出。
7-14 喊山
bfs。
7-15 长城
二维凸包。