空色天絵 / NEO TOKYO NOIR 01
888 字
4 分钟
Vjudge 练习 1
A - Japanese Cursed Doll
# include <bits/stdc++.h> using namespace std; int main() { int n, t, p; cin >> n >> t >> p; vector<int> l(n + 1); for (int i = 1; i <= n; ++i) cin >> l[i]; sort(l.begin() + 1, l.end()); cout << max(0, t - l[n- p + 1]); return 0; }
B - Rotate Colored Subsequence
# include <bits/stdc++.h> using namespace std; int main() { int n, m, c; string s; cin >> n >> m >> s; vector<int> idx(n); vector<int> mm(m + 1, -1), firsts(m + 1, 0); for (int i = 0; i < n; ++i) idx[i] = i; for (int i = 0; i < n; ++i) { cin >> c; if (mm[c] == -1) { mm[c] = i; firsts[c] = i; } else { idx[i] = mm[c]; mm[c] = i; } } for (int i = 1; i <= m; ++i) idx[firsts[i]] = mm[i]; for (int i : idx) cout << s[i]; return 0; }
C - 玩具谜题
# include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<int> face(n); vector<string> name(n); int tmp; for (int i = 0; i < n; ++i) { cin >> tmp; face[i] = (tmp == 0 ? 1 : -1); cin >> name[i]; } int a, s; int idx = 0; for (int i = 0; i < m; ++i) { cin >> tmp; a = (tmp == 0 ? -1 : 1); cin >> s; idx += a * face[idx] * s; idx %= n; idx = idx + (idx < 0 ? n : 0); } cout << name[idx]; return 0; }
D - 两只塔姆沃斯牛 The Tamworth Two
# include <bits/stdc++.h> using namespace std; typedef struct { int x, y, face; // 0: N, 1: E, 2: S, 3: W } Statu; int dx[4] = {0, 1, 0, -1}, dy[4] = {-1, 0, 1, 0}; int main() { char m[10][10]; Statu C, F; for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { cin >> m[i][j]; if (m[i][j] == 'C') { C = { j, i, 0 }; m[i][j] = '.'; } if (m[i][j] == 'F') { F = { j, i, 0 }; m[i][j] = '.'; } } } int t = 0; for (t = 1; t < 10000; ++t) { int new_cx = C.x + dx[C.face], new_cy = C.y + dy[C.face]; if (new_cx < 0 || new_cx>9 || new_cy < 0 || new_cy>9 || m[new_cy][new_cx] == '*') C.face = (C.face + 1) % 4; else C = { new_cx, new_cy, C.face }; int new_fx = F.x + dx[F.face], new_fy = F.y + dy[F.face]; if (new_fx < 0 || new_fx>9 || new_fy < 0 || new_fy>9 || m[new_fy][new_fx] == '*') F.face = (F.face + 1) % 4; else F = { new_fx, new_fy, F.face }; if (C.x == F.x && C.y == F.y) break; } cout << (t == 10000 ? 0: t); return 0; }
E - The Fool
# include <bits/stdc++.h> using namespace std; int main() { int n, m, k; cin >> n >> m >> k; vector<string> lines(n); for (int i = 0; i < n; ++i) cin >> lines[i]; string word1 = lines[0].substr(0, k); string word2 = lines[0].substr(k, k); string word3 = lines[1].substr(0, k); string word; if (word1 == word2) word = word1; if (word1 == word3) word = word1; if (word2 == word3) word = word2; int same = -1; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { string tmp_word = lines[i].substr(j * k, k); if (tmp_word != word) cout << i + 1 << " " << j + 1; } } return 0; }
F - LOWER
# include <bits/stdc++.h> using namespace std; int main() { int n, q; string s; cin >> n >> s >> q; vector<int[3]> ops(q); int do_op = 0; for (int i = 0; i < q; ++i) { scanf("%d %d %c", &ops[i][0], &ops[i][1], &ops[i][2]); if (ops[i][0] == 2 || ops[i][0] == 3) do_op = i; } for (int i = 0; i < q; ++i) { if (ops[i][0] == 1) s[ops[i][1] - 1] = ops[i][2]; if (i == do_op) { if (ops[i][0] == 2) transform(s.begin(), s.end(), s.begin(), ::tolower); if (ops[i][0] == 3) transform(s.begin(), s.end(), s.begin(), ::toupper); } } cout << s; return 0; }
G - 文件压缩
# include <bits/stdc++.h> using namespace std; int main() { int n, p; cin >> n; vector<int> flag(n, 0); vector<char> l(n), r(n), ans(n); for (int i = 0; i < n; ++i) { cin >> r[i]; l[i] = r[i]; } cin >> p; sort(l.begin(), l.end()); ans[0] = r[p - 1]; flag[p - 1] = 1; char now = r[p - 1]; for (int i = 0; i < n; ++i) if (l[i] == r[p - 1]) { ans[n - 1] = r[i]; now = r[i]; flag[i] = 1; break; } for (int i = 2; i < n; ++i) { for (int j = n - 1; j >= 0; --j) { if (l[j] == now && !flag[j]) { ans[n - i] = r[j]; now = r[j]; flag[j] = 1; break; } } } for (int i = 0; i < n; ++i) cout << ans[i]; return 0; }