72分求助!
查看原帖
72分求助!
809708
whssy楼主2023/2/19 13:24
#include<bits/stdc++.h>
using namespace std;
int n,k;
bool v[100001];
bool fl[100001];
int f(int num){
	int cnt=0;int a=0;bool o=0;
	for(int i=1;i<=n;i++){
		if(v[i-1]!=v[i])
		{
			a=0;
		}
		
		a++;
		if(a>num)
		{fl[i]=!fl[i];a=0;cnt++;
		}
	}
	return cnt+1;
}
int main(){
	cin>>n>>k;int kai=0,guan=0;
	for(int i=1;i<=n;i++){
		char c;cin>>c;
		if(c=='N') v[i]=1;
		else v[i]=0;
		
	}
	int l=1,r=100000000;
	for(int i=1;i<=n;i++)
			fl[i]=v[i];
	while(l<=r){
		
		int mid=l+(r-l>>1);
		if(f(mid)>k) l=mid+1;
		else r=mid-1; 
		for(int i=1;i<=n;i++)
			fl[i]=v[i];
		
	}
	printf("%d",l);
}
2023/2/19 13:24
加载中...