这个数据卡半天了
查看原帖
这个数据卡半天了
515971
Owenzjg楼主2023/4/2 22:20
#include <bits/stdc++.h>
using namespace std;
int n, k;
string a;
bool check(int x) {
    bool flag = 1;
    // 记录特殊情况
    int cnt = 0;
    // 记录连续数量
    int ans = 0;
    // 记录断点数量
    for (int i = 1; i <= n; i++) {
        if (flag || a[i] == a[i - 1]) {
            cnt++;
            flag = 0;
        } else {
            cnt = 1;
        }
        if (cnt > x) {
            ans++;
            if (cnt >= 3)
                cnt = 0;
            else {
                if (a[i + 1] != a[i])
                    cnt = 1;
                else
                    cnt = 0;
            }
            flag = 1;
        }
    }
    return ans <= k;
}
int main() {
    cin >> n >> k;
    cin >> a;
    int l = 0, r = n;
    a = ' ' + a;
    while (l < r) {
        int mid = (l + r) / 2;
        // cout << mid << " ";
        if (check(mid))
            r = mid;
        else
            l = mid + 1;
    }
    cout << max(r,1);
    return 0;
}
2023/4/2 22:20
加载中...