玄学RE,90分求助
查看原帖
玄学RE,90分求助
282292
966123anyunchuan楼主2020/9/30 18:58

第10个测试点RE了,为什么,跪求大佬!

#include <iostream>
#include <cstring>
using namespace std;
int m, n, x, y, maxdeep, wide, len[5010], deep[5010], t[5010][5010];
char tree[5010][5010];
void pre()
{
	int sum=0, k=1;
    for(int i=1; i<=15; i++)
    {
    	deep[i]=i+len[i-1];
    	if(i>1) k=sum+i-1;
    	len[i]=k;
    	sum+=k;
	}
	return ;
}
void pre_deep(int k)
{
    int sum=0;
    for(int i=1, j=k; i<=k; i++, j--)
    {
    	if(i>1) deep[i]=i+len[j]+sum;
    	else deep[i]=1;
    	if(i>1) sum+=len[j];
    //	cout<<deep[i]<<" ";
	}
	return ;
}
void beginn(int now, int h, int l)
{
	maxdeep=max(maxdeep, h);
	if(now==0) return ;
	int h1=h+1, h2=h+1, l1=l-1, l2=l+1;
	for(; h1<=h+len[now]; h1++, l1--)
	{
		tree[h1][l1]='/';
	}
	tree[h1][l1]='o';
	beginn(now-1, h1, l1);
	for(; h2<=h+len[now]; h2++, l2++)
	{
		tree[h2][l2]='\\';
	}
	tree[h2][l2]='o';
	beginn(now-1, h2, l2);
	return ;
}
void up(int x, int y)
{
	tree[x][y]=' ';
	if(x-1>=1&&y>=1&&(tree[x-1][y-1]=='/'||tree[x-1][y-1]=='\\'))
	{
		up(x-1, y-1);
	}
	if(x-1>=1&&(tree[x-1][y+1]=='/'||tree[x-1][y+1]=='\\'))
	{
		up(x-1, y+1);
	}
	return ;
}
void down(int x, int y)
{
	tree[x][y]=' ';
	if(x+1<=maxdeep&&y-1>=1&&tree[x+1][y-1]!=' ')
	{
		down(x+1, y-1);
	}
	if(x+1<=maxdeep&&tree[x+1][y+1]!=' ')
	{
		down(x+1, y+1);
	}
	return ;
}
void erase(int x, int y)
{//向上的, 向下的
	tree[x][y]=' ';
	up(x, y);
	down(x, y);
	return ;
}
int main()
{
	cin>>m>>n;
	memset(tree, ' ', sizeof(tree));
	pre();
	pre_deep(m);
	wide=((1<<(m-1))+(1<<(m-1))/2*3+((1<<(m-1))/2-1));
	tree[1][((wide)/2+1)]='o';
	beginn(m-1, 1, (wide)/2+1);
	if(n>0)
	for(int ii=1; ii<=n; ii++)
	{
		cin>>x>>y;
		int cnt=0;
		for(int i=1; ; i++)
		{
			if(tree[deep[x]][i]=='o')
			{
				cnt++;
				if(cnt==y)
				{
					y=i;
					break;
				}
			}
		}
		x=deep[x];
		t[ii][1]=x, t[ii][2]=y;
	}
	if(n>0)
    for(int i=1; i<=n; i++)
    {
        erase(t[i][1], t[i][2]);
    }
	for(int i=1; i<=maxdeep; i++)
	{
		for(int j=1; j<=wide; j++)
		{
			cout<<tree[i][j];
		}
		cout<<endl;
	}
	return 0;
}
2020/9/30 18:58
加载中...