RT, 不知道有什么问题
#include <bits/stdc++.h>
using namespace std;
string s,ss;
int n,k,m,ans;
int a[100005];
bool check(int x)
{
int rnt=0;
if(x==1)
{
ss="0";
for(int i=1; i<=n; i++)
{
if(i&1) ss+='N';
else ss+='F';
}
for(int i=1; i<=n; i++)
if(ss[i]!=s[i]) ++rnt;
if(rnt>k) return 1;
ss="0",rnt=0;
for(int i=1; i<=n; i++)
{
if(i&1) ss+='F';
else ss+='N';
}
for(int i=1; i<=n; i++)
if(ss[i]!=s[i]) ++rnt;
return (rnt>k)?1:0;
}
for(int i=1; i<=m; i++)
if(a[i]>x) rnt+=a[i]/(x+1);
return (rnt>k)?1:0;
}
int main()
{
scanf("%d%d", &n, &k);
cin>>s;
for(int i=n; i>=1; i--) s[i]=s[i-1];
s[0]='0';
a[++m]=1;
for(int i=2; i<=n; i++)
{
if(s[i]==s[i-1]) ++a[m];
else ++a[++m];
}
for(int i=(1<<30); i; i>>=1)
if(check(ans+i)) ans+=i;
++ans;
printf("%d", ans);
return 0;
}