60分蒟蒻求助iui
查看原帖
60分蒟蒻求助iui
1104479
zombiell810975楼主2024/3/26 16:22
#include<bits/stdc++.h>
using namespace std;
int n,k,bo[10005]={0}; 
bool che(int &max0){
//	cout<<max0;
//	cout<<endl;
	int p=1,ans=1,c=0,f=1,s=f,sum=0,sum0=0;
	if(max0==1){
		for(int i=1;i<=n;i++){
			if(bo[0]!=i%2)	sum+=1; 
			if(bo[0]!=(i+1)%2) sum0+=1;
		}
		sum=min(sum,sum0);
		return sum<=k; 
	}
	while(s<=n){
		if(bo[++s]==bo[f]){
			ans+=1;
			if(ans>max0){
				f=s+1;
				s=f;
				ans=1;
				sum+=1;
			}
		}
		else{
			f=s;
			s=f;
			ans=1;
		}
		//cout<<f<<' '<<s<<' '<<ans<<' '<<sum<<endl;
		if(sum>k)	return false;
	}
	return true;
}
int main(){
	cin>>n>>k;
	char temp;
	int i,l=1,r=n,mid,ans=0;
	for(i=1;i<=n;i++){
		cin>>temp;
		if(temp=='N') bo[i]=0;
		else bo[i]=1;
	}
//	for(i=1;i<=n;i++) cout<<bo[i];
	while(l<=r){
		mid=(l+r)/2;
		if(che(mid)){
			r=mid-1;
			ans=mid;
		}
		else l=mid+1;
	}
	cout<<ans;
	return 0;
} 
2024/3/26 16:22
加载中...