求助大佬,50分不知道怎么优化
查看原帖
求助大佬,50分不知道怎么优化
544007
lhs_chris楼主2023/1/11 20:11
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5;
int n,x,y;
int a[9999][9999];
void abc(int nn)
{
	int m=1,z=1;
	while(1)
	{
		for(int i=z;i<=n;i++)//→ 
		{
			if(a[z-1][i]==0 or a[z+1][i]==0 or a[z][i-1]==0 or a[z][i+1]==0)
			{
				a[z][i]=m++;
//				cout<<a[z][i]<<" "; 
			}
			if(m>(nn*nn))
			{
//				cout<<"→"<<m<<"\n"; 
				return;
			}
//			cout<<a[z][i]<<" ";
		}
//		cout<<"\n"; 
		for(int i=z+1;i<=n;i++)//↓ 
		{
			if(a[i-1][n]==0 or a[i+1][n]==0 or a[i][n-1]==0 or a[i][n+1]==0)
			{
				a[i][n]=m++;
			}
			if(m>(nn*nn))
			{
//				cout<<"↓"<<m<<"\n";
				return;
			}
//			cout<<a[i][n]<<" ";
		}
//		cout<<"\n";
		for(int i=n-1;i>=z;i--)//← 
		{
			if(a[n-1][i]==0 or a[n+1][i]==0 or a[n][i-1]==0 or a[n][i+1]==0)
			{
				a[n][i]=m++;
			}
			if(m>(nn*nn))
			{
//				cout<<"←"<<m<<"\n";
				return;
			}
//			cout<<a[n][i]<<" "; 
		}
		n-=1;
		z+=1;
//		cout<<"\n";
		for(int i=n;i>=z;i--)//↑ 
		{
			if(a[z-1-1][i]==0 or a[z-1+1][i]==0 or a[z-1][i-1]==0 or a[z-1][i+1]==0)
			{
				a[z-1][i]=m++;
			}
			if(m>(nn*nn))
			{
//				cout<<"↑"<<m<<"\n";
				return;
			}
//			cout<<a[z-1][i]<<" ";
		}
//		cout<<"\n";
//		cout<<m;
	}
} 
int main()
{
	cin>>n>>x>>y;
	int nn=n;
	if(n==1)
	{
		cout<<1;
		return 0;
	 } 
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			a[i][j]=0;
		}
	}
//	cout<<m; 
	abc(nn);
//	cout<<n*n<<"\n";
	cout<<a[x][y];
}

求助大佬不知道怎么优化,50分其他全部MLE.

2023/1/11 20:11
加载中...