正经题解|新年大扫除
2024-03-22 13:56:21
发布于:浙江
8阅读
0回复
0点赞
题面大意
给你个字符,只由大写字母和组成,每次可以选择个连续的字符,将选中的各个字符变成。
题意分析
找到最小的操作数,将所有的变成
解题思路
每次选择个字符,如果从开始选,则可变的范围就是,考虑只有需要变成,我们可以找到第一个为的字符,从这个字符开始选择个字符变成,然后继续找到下一个。
那么实际上每次我们只需要维护一个值,它表示的字符都能变成
时间复杂度解析
我们只需要遍历一次字符即可,复杂度为
代码演示
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,k;
string s;
cin >> n >> k;
cin >> s;
int r = -1;
int cnt = 0;
for(int i=0;i<s.length();i++) {
if (s[i] == 'O' && i > r) {
cnt ++;
r = i + k - 1;
}
}
cout << cnt << endl;
return 0;
}
这里空空如也
有帮助,赞一个