84pts求助
查看原帖
84pts求助
739214
dmx7u19x楼主2023/10/20 09:23
#include<bits/stdc++.h>
using namespace std;

int n,k;
bool a[100100];


bool IF(int ans)
{
	int u=0;
	int ret=0;
	bool u1=a[1]; 
	for(int i=1;i<=n;i++)
	{
		if(a[i]==u1)
		{
			u++;
		}
		else
		{
			u=1;
			u1=a[i];
		}
		if(u>ans)
		{
			ret++;
			u=0;
			u1=a[i+1];
		}
	}
	if(ret>k)
		return 1;
	else
		return 0;
}

int findW()
{
	int left=1;
	int right=n;
	while(left<=right)
	{
		int mid=(right+left)/2;
		if(IF(mid)==1)
		{
			left=mid+1;
		}
		else
		{
			right=mid-1;
		}
	}
	return left;
}

int main()
{
	cin>>n>>k;
	
	for(int i=1;i<=n;i++)
	{
		char t;
		cin>>t;
		switch(t)
		{
			case 'N':
				a[i]=1;
				break;
			case 'F':
				a[i]=0;
				break;
		}	
	}
	cout<<findW();
	return 0;
}

WA in #1 #2 #8 #9

提交记录

2023/10/20 09:23
加载中...