#4 # 5 #8 #9 WA,求调
查看原帖
#4 # 5 #8 #9 WA,求调
584856
wingking楼主2023/7/11 09:24
#include <iostream>
using namespace std;
#define For(i,a,b) for(int i =(a);i<=(b);++i)
#define Rof(i,a,b) for(int i = (a);i>=(b);--i)

const int N = 1e5+1;

int id(int x,int y){
	return (1<<(x-1)) - 1 + y;
}

int ls(int k){
	return k*2;
}

int rs(int k){
	return k*2+1;
}

bool del[N];
char ans [4000][4000];

int h(int level){
	return 3*(1<<(level-2));
}

int w(int level){
	return 6 * (1<<(level-2));
}

char tree[3][6]={"  o  ",
				 " / \\ ",
				 "o   o"};
/*
  o  
 / \ 
o   o
*/

void draw(int m,int i,int x,int y){
	if(del[i]) return;
	if(m == 2){
		int ht = h(2),wd = w(2);
		for(int j = 0;j<ht;++j){
			for(int k = 0;k<wd;++k){
				ans[x+j][y+k] = tree[j][k];
			}
		}
		return;
	}
	else{
		int ht = h(m),wd = w(m);
		draw(m-1,ls(i),x+ht/2,y);
		draw(m-1,rs(i),x+ht/2,y+wd/2);
		ans[x][y+wd/2-1] = 'o';
		
		for(int j = 1,k = 1;j<ht/2;++j,++k){
			if(!del[ls(i)]) ans[x+j][y+wd/2-1-k] = '/';
			if(!del[rs(i)]) ans[x+j][y+wd/2-1+k] = '\\';
		}
	}
}
		



int main(){
// 	ios::sync_with_stdio(0);
// 	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);
//	tree[0] ="  o  ";
//	cout<<tree[0];
	int n,d,a,c;
//	cout<<tree[0]<<'\n'<<tree[1]<<'\n'<<tree[2];
	cin>>n>>d;
	while(d--){
		cin>>a>>c;
		del[id(a,c)] = 1;
	}
	draw(n,1,1,1);
	int ht = h(n),wd = w(n);
	for(int i = 1;i<=ht;++i){
		for(int j = 1;j< wd;++j){
			if(ans[i][j] =='\0') ans[i][j] = ' ';
		}
		if( i<ht) ans[i][wd] = '\n';
		cout<<ans[i]+1;
	}
	
	return 0;
	
	
}
2023/7/11 09:24
加载中...