96pts求助
查看原帖
96pts求助
616996
Graph楼主2023/9/22 17:10

rt

#include<bits/stdc++.h>
using namespace std;

const string str="NF";
int n,k;
string s;

string t;
bool check(int x)
{
	t=s;
	int cnt=0,cz=0;
	for(int i=1;i<=n;i++)
	{
		if(t[i]==t[i-1])
		{
			cnt++;
			if(cnt==x)
			{
				cz++;
				if(t[i]=='N')
					t[i]='F';
				else
					t[i]='N';
				cnt=0;
			}
		}
		else
			cnt=0;
	}
	return cz<=k;
}

int main()
{
	cin>>n>>k>>s;
	s=" "+s;
	int cnt1=0,cnt2=0;
	for(int i=1;i<=n;i++)
	{
		if(s[i]==str[i%2])
			cnt1++;
		else
			cnt2++;
	}
	if(cnt1<=k||cnt2<=k)
	{
		cout<<1;
		return 0;
	}
	int lt=0,rt=n+1;
	while(lt+1<rt)
	{
		int mid=(lt+rt)>>1;
		if(check(mid)==true)
			rt=mid;
		else
			lt=mid;
	}
	cout<<rt;
	return 0;
}
2023/9/22 17:10
加载中...