T1:字符串加密(二)
本题难度简单,是一个模拟题,注意 可能非常大,需要先模 。
代码实现
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { string m; cin >> m; ll k; cin >> k; k %= 26; string ans; for (char c : m) { if (isupper(c)) ans += (c-'A'-k+26)%26 + 'A'; else ans += (c-'a'-k+26)%26 + 'a'; } cout << ans << '\n'; return 0; }
T2:石头剪刀布
本题难度较大,是一个模拟+排序的问题,用结构体绑定每个人的得分和编号,然后按题意模拟即可。
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using P = pair<int, int>; bool win(char a, char b) { if (a == 'C' and b == 'G') return true; if (a == 'P' and b == 'C') return true; if (a == 'G' and b == 'P') return true; return false; } int main() { int n, m; cin >> n >> m; int n2 = n*2; vector<string> a(n2); rep(i, n2) cin >> a[i]; vector<P> d(n2); rep(i, n2) d[i] = P(0, i); rep(mi, m) { rep(ni, n) { int i = ni*2, j = ni*2+1; int ai = d[i].second, aj = d[j].second; if (win(a[ai][mi], a[aj][mi])) d[i].first--; if (win(a[aj][mi], a[ai][mi])) d[j].first--; } sort(d.begin(), d.end()); } rep(i, n2) { cout << d[i].second + 1 << '\n'; } return 0; }
T3:Excel表格函数
本题难度较大,通过普通的模拟就可以拿到 分。注意到保证操作 、操作 和操作 出现的总次数不超过 次,因此可以使用前缀和技巧处理每次询问的区间和。
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 1; i <= (n); ++i) using namespace std; int a[2005][2005]; int row_s[2005][2005]; int col_s[2005][2005]; int main() { cin.tie(nullptr) -> sync_with_stdio(false); int n, m, q; cin >> n >> m >> q; rep(i, n)rep(j, m) cin >> a[i][j]; rep(i, n)rep(j, m) row_s[i][j] += row_s[i][j-1]+a[i][j]; rep(i, n)rep(j, m) col_s[i][j] += col_s[i-1][j]+a[i][j]; rep(qi, q) { int op; cin >> op; if (op == 1) { int x, y, z; cin >> x >> y >> z; a[x][y] += z; for (int j = y; j <= m; ++j) row_s[x][j] += z; for (int i = x; i <= n; ++i) col_s[i][y] += z; } else if (op == 2) { int x, y1, y2, s = 0; cin >> x >> y1 >> y2; s += row_s[x][y2]; s -= row_s[x][y1-1]; cout << s << '\n'; } else if (op == 3) { int y, x1, x2, s = 0; cin >> y >> x1 >> x2; s += col_s[x2][y]; s -= col_s[x1-1][y]; cout << s << '\n'; } else if (op == 4) { int x, y1, y2, s = -1001001001; cin >> x >> y1 >> y2; for (int j = y1; j <= y2; ++j) s = max(s, a[x][j]); cout << s << '\n'; } else { int y, x1, x2, s = 1001001001; cin >> y >> x1 >> x2; for (int i = x1; i <= x2; ++i) s = min(s, a[i][y]); cout << s << '\n'; } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现