求助!!!
查看原帖
求助!!!
872386
Officer楼主2024/6/29 21:12
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n,m,k,sum,sumxl,sumxr,sumyl,sumyr;
char a[N][N];
int b[N][N],c[N][N];
bool check1(int xl,int xr,int yl,int yr)
{
	if(c[xr][yr]-c[xr][yl-1]-c[xl-1][yr]+c[xl-1][yl-1]>0)
	{
		return 0;
	}
	if(b[xr][yr]-b[xr][yl-1]-b[xl-1][yr]+b[xl-1][yl-1]<=k)
	{
		return 1;
	}
	if(b[xr][yr]-b[xr][yl-1]-b[xl-1][yr]+b[xl-1][yr-1]>=(xr-xl+1)*(yr-yl+1)-k)
	{
		return 1;
	}
	return 0;
}
bool check2(int xl,int xr,int yl,int yr)
{
	if(c[xr][yr]-c[xr][yl-1]-c[xl-1][yr]+c[xl-1][yr-1]==(xr-xl+1)*(yr-yl+1))
	{
		return 1;
	}
	return 0;
}
int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>(a[i]+1);
		for(int j=1;j<=m;j++)
		{
			b[i][j]=b[i][j-1]+b[i-1][j]-b[i-1][j-1]+(a[i][j]=='G');
			c[i][j]=c[i][j-1]+c[i-1][j]-c[i-1][j-1]+(a[i][j]=='P');
		}
	}
	for(int i=1;i<=m;i++)
	{
		for(int j=i;j<=m;j++)
		{
			int l=1,r=0;
			while(r<=n&&l<=n)
			{
				while(r<n&&check1(l,r+1,i,j))
				{
					r++;
				}
				if((j-i+1)*(r-l+1)>sum)
				{
					sumxl=l;
					sumxr=r;
					sumyl=i;
					sumyr=j;
					sum=(j-i+1)*(r-l+1);
				}
				l++;
			}
		}
	}
	for(int i=1;i<=m;i++)
	{
		for(int j=i;j<=m;j++)
		{
			int l=1,r=0;
			while(r<=n&&l<=n)
			{
				while(r<n&&check2(l,r+1,i,j))
				{
					r++;
				}
				if((j-i+1)*(r-l+1)>sum)
				{
					sumxl=l;
					sumxr=r;
					sumyl=i;
					sumyr=j;
					sum=(j-i+1)*(r-l+1);
				}
				l++;
			}
		}
	}
	cout<<sum<<endl;
	if(check2(sumxl,sumxr,sumyl,sumyr))
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				cout<<a[i][j];
			}
			cout<<endl;
		}
	}
	else if(b[sumxr][sumyr]-b[sumxr][sumyl-1]-b[sumxl-1][sumyr]+b[sumxl-1][sumyl-1]<=k)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				if(i>=sumxl&&i<=sumxr&&j>=sumyl&&j<=sumyr)
				{
					cout<<"B";
				}
				else
				{
					cout<<a[i][j];
				}
			}
			cout<<endl;
		}
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				if(i>=sumxl&&i<=sumxr&&j>=sumyl&&j<=sumyr)
				{
					cout<<"G";
				}
				else
				{
					cout<<a[i][j];
				}
			}
			cout<<endl;
		}
	}
 	return 0;
}
/*
*/

WA十三个

2024/6/29 21:12
加载中...