1. AtCoder Beginner Contest 442 全题解
最近参加了AtCoder Beginner Contest 442,感觉题目整体难度适中,特别是前几题非常适合算法初学者练习。本文将详细解析A-F六道题目的解题思路和代码实现,希望能帮助到正在准备编程竞赛的朋友们。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. A题 - Count .
2.1 题目分析
题目要求统计给定字符串中'i'和'j'字符的出现次数。这是一道非常基础的字符串处理题目,主要考察对字符串的遍历和条件判断能力。
2.2 解题思路
- 读取输入的字符串
- 初始化计数器为0
- 遍历字符串中的每个字符
- 如果当前字符是'i'或'j',计数器加1
- 输出最终计数结果
2.3 代码实现
cpp复制#include <bits/stdc++.h>
using namespace std;
void solve() {
string s;
cin >> s;
int ans = 0;
for(auto ch : s) {
if(ch == 'i' || ch == 'j') {
ans++;
}
}
cout << ans << endl;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
solve();
return 0;
}
2.4 注意事项
- 注意字符串可能包含空格或其他特殊字符,但题目保证只包含小写字母
- 大小写敏感,题目要求统计的是小写'i'和'j'
- 时间复杂度O(n),空间复杂度O(1),n为字符串长度
3. B题 - Music Player
3.1 题目分析
模拟一个音乐播放器的音量控制逻辑:
- 操作1:音量+1
- 操作2:音量-1(不低于0)
- 操作3:切换播放/暂停状态
当播放状态且音量≥3时输出"Yes",否则输出"No"
3.2 解题思路
- 维护两个状态变量:当前音量level和播放状态stop
- 根据输入的操作类型更新状态
- 每次操作后根据条件输出相应结果
3.3 代码实现
cpp复制#include <bits/stdc++.h>
using namespace std;
void solve() {
int q;
cin >> q;
int level = 0;
bool stop = true;
while(q--) {
int op;
cin >> op;
if(op == 1) {
level++;
} else if(op == 2) {
level = max(level - 1, 0);
} else {
stop = !stop;
}
