77分求条
查看原帖
77分求条
1345652
Luliuyan114514楼主2024/11/10 21:19

code:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,tn,tm;
char mp[3100][3100];
struct node{
	int x,y;
}t[15][15];
void destroy(int x,int y)
{
	int x1=x-1,y1=y-1,x2=x+1,y2=y+1;
	//left:
	if(mp[x1][y1]=='\\')
	{
		while(x1>0&&y1>0&&mp[x1][y1]!='o')
		{
			x1--,y1--;
		}
		x1++,y1++;
		while(x2<=tn&&y2<=tm&&mp[x2][y2]!=0)
		{
			x2++,y2++;
		}
		x2--,y2--;
		for(int i=x1;i<=x2;++i)
		{
			for(int j=y1;j<=y2;++j)
			{
				mp[i][j]=' ';
			}
		}
	}
	else
	{
		x1=x2=x,y1=y2=y;
		x1--,y1++;x2++,y2--;
		while(x1>0&&y1<=tm&&mp[x1][y1]!='o')
		{
			x1--,y1++;
		}
		x1++,y1--;
		while(x2<=tn&&y2>0&&mp[x2][y2]!=0)
		{
			x2++,y2--;
		}
		x2--,y2++;
		for(int i=min(x1,x2);i<=max(x2,x1);++i)
		{
			for(int j=min(y2,y1);j<=max(y1,y2);++j)
			{
				mp[i][j]=' ';
			}
		}
	}
}
int main(){
	cin>>m>>n;
	int kg=3;
	tm=(1<<(m-1))+((1<<(m-1))/2)*3+((1<<(m-1))/2-1);
	for(int i=tm;i>=1;i-=2,tn++);
	for(int i=1;i<=tn;++i)
	{
		for(int j=1;j<=tm;++j)
		{
			mp[i][j]=' ';
		}
	}
	int last=kg,kg2=1;
	int X,Y;
	for(int i=tn;i>=1;--i,kg-=2,kg2+=2)
	{
		if(i==tn)
		{
			for(int j=1;j<=tm;j+=6)
			{
				mp[i][j]='o';
				mp[i][j+4]='o';
			}
		}
		else if(kg<0)
		{
			kg=kg2;
			for(int j=1+tn-i;j<=tm-tn+i;++j)
			{
				mp[i][j]='o';
				j+=kg;
			}
		}
		else
		{
			for(int j=1+tn-i;j<=tm;++j)
			{
				mp[i][j]='/';
				j+=kg+1;
				mp[i][j]='\\';
				j+=kg2;
			}
		}
	}
	X=1;
	for(int i=1;i<=tn;++i)
	{
		bool flag=0;
		Y=0;
		for(int j=1;j<=tm;++j)
		{
			if(mp[i][j]=='o')
			{
				flag=1;
				t[X][++Y]={i,j};
//				cout<<X<<' '<<Y<<' '<<i<<' '<<j<<endl;
			}
		}
		if(flag)X++;
	}
	X--;
	for(int i=1;i<=n;++i)
	{
		int x,y;
		cin>>x>>y;
		if(x==1)
		{
			continue;
		}
		destroy(t[x][y].x,t[x][y].y);
	}
	for(int i=1;i<=tn;++i)
	{
		for(int j=1;j<=tm;++j)
		{
			printf("%c",mp[i][j]);
		}
		puts("");
	}
	
	return 0;
}

WA on #7,#9

2024/11/10 21:19
加载中...