求调
查看原帖
求调
1028442
linruizhe111楼主2025/7/24 15:46
#include <iostream>
using namespace std;
int n,k;
char a[100010];
bool check(int mid){
	int cnt=0,res=0;
	char op='N';
	for(int i=1;i<=n;i++){
		if(a[i]!=op){
			if(op=='N')op='F';
			if(op=='F')op='N';
			cnt=1;
		}
	    else if(op==a[i]){
			cnt++;
		}
		if(cnt==mid+1){
			res++;
			cnt=1;
			if(op=='N')op='F';
			if(op=='F')op='N';
		}
	}
	if(res>k)return false;
	else return true;
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int l=1,r=n,ans;
	while(l<=r){
		int mid=l+r>>1;
		if(check(mid)){
			r=mid-1,ans=mid;
		}
		else {
			l=mid+1;
		}
	}
	cout << ans;
	return 0;
} 
2025/7/24 15:46
加载中...