萌新求调大模拟,33pts
查看原帖
萌新求调大模拟,33pts
400269
Jorisy楼主2022/3/31 15:34

rt,只 A 了 #1~3,其他全 WA。

code:

#include<bits/stdc++.h>
using namespace std;

int m,n,dep=1,a[2005];
char ans[2005][2005]; 

void del(int x)
{
	a[x<<1]=0;
	a[x<<1|1]=0;
	if(x<=(1<<m-1))
	{
		del(x<<1);
		del(x<<1|1);
	}
}

void sol(int x,int sp_lr=3,int sp_rl=1)
{
	int h=0;
	for(int i=1;i<dep;i++)
	{
		ans[dep][h+i]=' ';
	}
	h+=dep;
	if(x==0)
	{
		ans[dep][h]='o';
		return;
	}
	for(int i=1;i<=x;i++)
	{
		ans[dep][h]='o';
		for(int j=1;j<=sp_lr;j++)
		{
			ans[dep][h+j]=' ';
		}
		ans[dep][h+sp_lr+1]='o';
		for(int j=1;j<=sp_rl;j++)
		{
			ans[dep][h+sp_lr+1+j]=' ';
		}
		h+=sp_lr+sp_rl+2;
	}
	dep++;
	h=0;
	for(int i=sp_lr-2;i>=1;i-=2)
	{
		for(int j=1;j<=x;j++)
		{
			for(int k=1;k<dep;k++)
			{
				ans[dep][h+k]=' ';
			}
			h+=dep;
			ans[dep][h]='/';
			for(int k=1;k<=i;k++)
			{
				ans[dep][h+k]=' ';
			}
			h+=i+1;
			ans[dep][h]='\\';
			for(int k=1;k<=dep;k++)
			{
				ans[dep][h+k]=' ';
			}
			h+=dep;
		}
		dep++;
		h=0;
	}
	sol(x>>1,sp_lr==3?5:(sp_lr+1<<1)-1,sp_lr==3?5:(sp_lr+1<<1)-1);
}

int main()
{
	cin>>m>>n;
	for(int i=1;i<(1<<m);i++)
	{
		a[i]=1;
	}
	while(n--)
	{
		int i,j;
		cin>>i>>j;
		int k=(1<<i-1)+j-1;
		a[k]=0;
		a[k<<1]=0;
		a[k<<1|1]=0;
		del(k<<1);
		del(k<<1|1);
	}
	sol(m);
	int s=0;
	for(int i=dep;i>=1;i--)
	{
		for(int j=1;j<=m*5+3;j++)
		{
			if(ans[i][j]=='o')
			{
				if(!a[++s])
				{
					ans[i][j]=' ';
					for(int k=1;ans[i-k][j-k]!='o'&&ans[i-k][j-k]!=' '&&i-k>=1&&j-k>=1;k++)
					{
						ans[i-k][j-k]=' ';
					}
					for(int k=1;ans[i-k][j+k]!='o'&&ans[i-k][j+k]!=' '&&i-k>=1&&j+k<=m*5+3;k++)
					{
						ans[i-k][j+k]=' ';
					}
					for(int k=1;ans[i+k][j+k]!='o'&&ans[i+k][j+k]!=' '&&i+k<=dep&&j+k<=m*5+3;k++)
					{
						ans[i+k][j+k]=' ';
					}
					for(int k=1;ans[i+k][j-k]!='o'&&ans[i+k][j-k]!=' '&&i+k<=dep&&j-k>=1;k++)
					{
						ans[i+k][j-k]=' ';
					}
				}
			}
		}
	}
	for(int i=dep;i>=1;i--)
	{
		for(int j=1;j<=m*5+3;j++)
		{
			cout<<ans[i][j];
		}
		cout<<endl;
	}
 	return 0;
}
2022/3/31 15:34
加载中...