#include<bits/stdc++.h>
using namespace std;
int n,k,ans=0x7fffffff,cnt=0,maxa=0;
char s[100005];
int a[100005];
bool check(int);
int main(){
scanf("%d%d",&n,&k);
scanf("%s",s);
a[0]=1;
for(int i=1;i<n;i++){
if(s[i]==s[i-1]) a[cnt]++;
else{maxa=max(maxa,a[cnt]);a[++cnt]++;}
}
maxa=max(a[cnt],maxa);
int l=1,r=maxa+1,mid=(r+l)>>1;
while(l<r){
if(check(mid)){
r=mid;
ans=min(ans,mid);
}
else l=mid+1;
mid=(l+r)>>1;
}
if(check(mid)) ans=min(ans,mid);
printf("%d",ans);
return 0;
}
bool check(int x){
if(maxa<=x) return 1;
int sum=0;
for(int i=0;i<=cnt;i++) sum+=(a[i]/(x+1));
if(sum<=k) return 1;
return 0;
}
常见问题
long long无误,r=mid-1没用