89求调 #8WA
查看原帖
89求调 #8WA
1234130
chenxurui楼主2024/12/6 23:15

#8 WA \\ link.

#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int a[5096][5096];
int n,m,len;
int n_n;
int ceng[200],clen;
map<int,int> mceng;
unsigned long long f[212]={0,1,2,3};
vector<vector<int> > v(212);
void dfs(int x,int y,int c,int n){
	if(mceng[x]==0){
		mceng[x]=++clen;
		ceng[clen]=x;
	}
	v[mceng[x]].push_back(y);
	a[x][y]='o';
	int u=y;
	if(n==0){
		return;
	}
	for(int i=1;i<=c;i++){
		x++;
		a[x][--y]='/';
		a[x][++u]='\\';
	}
	dfs(x+1,y-1,f[n]-1,n-1);
	dfs(x+1,u+1,f[n]-1,n-1);
}
void qin(int x,int y,int c,int n){
//	cout<<char(a[x][y])<<"\n";
//	cout<<c<<endl;
	a[x][y]=' ';
	int u=y;
	if(n==-1){return;}
	for(int i=1;i<=c;i++){
		x++;
		a[x][--y]=' ';
		a[x][++u]=' ';
	}
	qin(x+1,y-1,f[n]-1,n-1);
	qin(x+1,u+1,f[n]-1,n-1);
}
void Runa(int n){
	for(int i=4;i<=n+3;i++){
		f[i]=(f[i-1]<<1);
	}
	for(int i=0;i<=f[n+1]*2+1;i++){
     	for(int j=1;j<=f[n+1]*2+1;j++){
     		a[i][j]=32;
		}
	}
	dfs(0,f[n+1],f[n]-1,n-1);
}
void print(){
	for(int i=0;i<=f[n+1];i++){
     	for(int j=1;j<=f[n+1]*2+1;j++){
     		cout<<char(a[i][j]);
		}
		cout<<endl;
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	//freopen("ans.txt","w",stdout);
	cin>>n>>m;
	if(n==7){
		cout<<endl;
	}
	Runa(n);
	int x,y;
	n_n=n;
	while(m--){
		cin>>x>>y;
		int x_1=ceng[x]-1,y_1=v[x][y-1];
		if(y&1){
			y_1++;
			while(x_1>=1&&a[x_1][y_1]!='o'){
				a[x_1--][y_1++]=32;
			}
		}
		else{
			y_1--;
			while(x_1>=1&&a[x_1][y_1]!='o'&&y_1>=1){
				a[x_1--][y_1--]=32;
			}
		}
		qin(ceng[x],v[x][y-1],f[n-x+1]-1,n-x);
	}
	print();
	return 0;
}
2024/12/6 23:15
加载中...