T1:最大数量
本题难度简单,考察二维数组计数,注意枚举小时和分钟从 开始。
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; int f[30][70]; // f[i][j] 记录 i 时 j 分这个时刻进入商场的人数 int main() { int n; cin >> n; rep(i, n) { int h, m; cin >> h >> m; f[h][m]++; } int maxn = 0, max_h = -1, max_m = -1; rep(i, 24)rep(j, 60) { if (f[i][j] > maxn) { maxn = f[i][j]; max_h = i; max_m = j; } } cout << max_h << ' ' << max_m << '\n'; cout << maxn << '\n'; return 0; }
T2:字符串拆分
本题难度中等,考察字符串基础、数组计数和前缀和技巧。枚举分界点 ,计算分界点 左右两边各出现不同字符的数量,这里可以使用数组计数+前缀和优化。
当分界点从 变为 时:
左子串多了一个字符 ,右子串少了一个字符
若左子串加入 之后且 的个数为 ,那么左子串的不同字符的个数 ++
若右子串去掉 之后且 的个数为 ,那么右子串的不同字符的个数 --
初始时,左子串为空,右子串为
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; void solve() { int n; string s; cin >> n >> s; int ans = 0; int cntl = 0, cntr = 0; vector<int> pre(130), suf(130); rep(i, n) if (++suf[s[i]] == 1) cntr++; rep(i, n-1) { if (++pre[s[i]] == 1) cntl++; if (--suf[s[i]] == 0) cntr--; ans = max(ans, cntl+cntr); } cout << ans << '\n'; } int main() { int t; cin >> t; while (t--) solve(); return 0; }
T3:喵星学院
本题难度中等,考察排序和桶以及拿部分分的能力,可以发现报名费一定是某个喵星人所愿意支付的钱,所以从小到大枚举每一个喵星人愿意支付的钱,不断更新答案即可。
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; int main() { int n; cin >> n; vector<int> w(n); rep(i, n) cin >> w[i]; sort(w.begin(), w.end()); ll ans = 0, tot = 0; rep(i, n) { if (ll(n-i)*w[i] > tot) { tot = ll(n-i)*w[i]; ans = w[i]; } } cout << tot << ' ' << ans << '\n'; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现