蒟蒻求调WA3,5,必关
查看原帖
蒟蒻求调WA3,5,必关
1290558
cqs_130楼主2025/6/28 14:27
#include<bits/stdc++.h>
using namespace std;
#define int long long
char f[10005][5005];
int k[1025];
int wr[10005];
signed main(){
	
	int m,n;
	cin>>m>>n;
	int ds=pow(2,m-1);
	int d=1;
	int dqj=1;
	while(ds!=0){
		f[1][dqj]='o';
		f[1][dqj+4]='o';
		dqj+=6;
		ds-=2;
		wr[1]=dqj;
	}
	
	while(n--){
		int c,w;
		cin>>c>>w;
		if(c>m || w>pow(2,c-1))continue;
		int l,r;
		int bs=pow(2,(m-c));
		r=bs*w;
		l=r-bs+1;
//		cout<<l<<' '<<r<<endl;
		for(int i=l;i<=r;i++){
			k[i]=1;
		}
	}
	
	
	
	int js=0;
	for(int i=1;i<=dqj;i++){
		if(f[1][i]=='o'){
			js++;
			if(k[js]==1)f[1][i]=' ';
		}
	}
	
	int mm=m-1;
	int dq=1;
	int cj=5;
	while(mm--){
		for(int i=1;i<=wr[d];i++){
			if(f[d][i]=='o'){
//				cout<<i<<' '<<cj<<endl;
				if(i%(cj+1)<=((cj+1)/2)){
					f[d+1][i+1]='\\';
				}else{
					f[d+1][i-1]='/';
				}
			}
			
		}
		cj=cj*2+1;
		d++;
		wr[d]=wr[d-1]-1;
		for(int i=1;i<dq;i++){
			for(int j=1;j<=wr[d];j++){
				if(f[d][j]=='\\'){
					f[d+1][j+1]='\\';
				}else if(f[d][j]=='/'){
					f[d+1][j-1]='/';
				}
			}
			d++;
			wr[d]=wr[d-1]-1; 
		}
		
		for(int i=1;i<=wr[d];i++){
			if(f[d][i]=='/'){
				f[d+1][i-1]='o';
			}else if(f[d][i]=='\\'){
				f[d+1][i+1]='o';
			} 
		}
		d++;
		wr[d]=wr[d-1]-1;
		
		
		if(dq==1)dq=2;
		else {
			dq=dq*2+1;
		}
	}
//	for(int i=1;i<=20;i++){
//		cout<<wr[i]<<endl;
//	}
	
	for(int i=d;i>=1;i--){
		for(int j=1;j<=wr[1];j++){
			if(f[i][j]=='\\'){
				cout<<'/';
			}else if(f[i][j]=='/'){
				cout<<'\\';
			}else if(f[i][j]=='o'){
				cout<<'o';	
			}else{
				cout<<' ';
			}
		}
		cout<<endl;
	}
	
	
} 
/*
5 1
2 3

*/
2025/6/28 14:27
加载中...