help!求助,只得了24分,求浇
查看原帖
help!求助,只得了24分,求浇
544110
Sandsculpturefist楼主2023/7/8 14:58
#include<iostream>
#include<algorithm>
using namespace std;
int n,k,m;
int a[301]; 
struct along{
	int l;
	int r;
}part[151];
bool cmp(along x,along y)
{
	return (x.r-x.l)>(y.r-y.l);
}
void P()
{
	int l,r;
	l=r=m=0;
	for(int i=1;i<=n;i++)
	{
		l=i;
		r=l;
		while(a[r+1]==a[l] and r!=n)
		{
			r++;
		}
		if(r-l>0)
		{
			m++;
			part[m].l=l;
			part[m].r=r;
			i=r-l+i-1;
		}
	}
	sort(part+1,part+1+m,cmp);
	return;
}
int main()
{
	scanf("%d%d",&n,&k);
	char h;
	for(int i=1;i<=n;i++)
	{
		cin>>h;
		if(h=='N')
			a[i]=1;
		else
			a[i]=0;
	}
	P();
	for(int i=1;i<=k;i++)
	{
		if(m==0 or m==1)
			break;
		if(part[1].r-part[1].l==1)
		{
			if(part[1].r==n)
			{
				a[part[1].r]++;
				a[part[1].r]%=2;
			}
			else if(part[1].l==1)
			{
				a[part[1].l]++;
				a[part[1].l]%=2;
			}
			else
			{
				a[(part[1].r+part[1].l)/2]++;
				a[(part[1].r+part[1].l)/2]%=2;
			}
		}
		else
		{	
			a[(part[1].r+part[1].l)/2]++;
			a[(part[1].r+part[1].l)/2]%=2;
		}
		P();
	}
	if(m==0)
		printf("0\n");
	else
		printf("%d\n",part[1].r-part[1].l+1);
//	for(int i=1;i<=m;i++)
//	{
//		printf("%d-%d\n",part[i].l,part[i].r);
//	}
//	for(int i=1;i<=n;i++)
//	{
//		printf("%d",a[i]);
//	}
	return 0;
}

2023/7/8 14:58
加载中...