样例没过,求助
查看原帖
样例没过,求助
750728
Gao_l楼主2023/9/22 10:01
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 5;

int n, m;
bool a[N];
bool b[N];
int check(int x)
{
    int sum = 1, cz = 0;
    for (int i = 1; i <= n; i++)
        b[i] = a[i];
    for (int i = 2; i <= n; i++)
    {
        if (b[i] != b[i - 1])
        {
            sum = 1;
        }
        else if (sum == x)
        {
            cz++;
            b[i] ^= 1;
            sum = 1;
        }
        else
        {
            sum++;
        }
    }
    return cz;
}

int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        char x;
        cin >> x;
        if (x == 'N')
            a[i] = true;
        else
            a[i] = false;
    }

    int lt = 1, rt = n;
    int ans = 0;

    while (lt <= rt)
    {
        int mid = (lt + rt) >> 1;
        int cnt = check(mid);

        if (cnt <= m || n - cnt <= m)
        {
            ans = mid;
            rt = mid - 1;
        }
        else
        {
            lt = mid + 1;
        }
    }

    cout << ans << endl;

    return 0;
}
2023/9/22 10:01
加载中...