求助二分答案
查看原帖
求助二分答案
366595
zty_luogu楼主2021/10/17 20:15
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define F(III,MMM,NNN) for(register int III=MMM;III<=NNN;III++)
typedef long long int ll;
#define inf 0x3f3f3f3f
#define linf 0x3f3f3f3f3f3f3f3f
#define re register
const int N=1010,
		  mod=10000007;
string s;
int n,x;
int check(int num){
	int l=s.size();
	string ss=s;
	int sum=1,ans=0;
	for(int i=1;i<l;i++){
		if(ss[i]==ss[i-1]){
			sum++;
		}else{
			sum=1;
		}
		if(sum==num){
			if(ss[i]=='F') ss[i]='N'; else ss[i]='F';
			sum=1;
			ans++;
		}
	}
	return ans;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>x;
	cin>>s;
	int l=0,r=n,ans;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid)<=x){
			r=mid-1;
			ans=mid;
		}else{
			l=mid+1;
		}
	}
	cout<<ans;
	return 0;
}

感觉思路和题解差不多

2021/10/17 20:15
加载中...