WA #3 #5求调(玄关)
查看原帖
WA #3 #5求调(玄关)
712647
rhx103513yyds楼主2024/8/1 12:35
#include<bits/stdc++.h>
#pragma G++ optimize(3)
using namespace std;
#define int long long
int m,n;
int p[12]={0,1,2,5,11,23,47,95,191,383,767,1535};
char a[3500][3500];
int v1[15][3500];
int v2[15][3500];
int vs[15];
struct dlt{
	int d,x;
	friend bool operator<(dlt a,dlt b){
		if(a.d==b.d)return a.x<b.x;
		return a.d<b.d;
	}
}dt[3500];
int sd;
queue<dlt>q;
map<dlt,bool>v;
void adddlt(int d,int x){
	while(!q.empty())q.pop();
	q.push({d,x});
	while(!q.empty()){
		dlt u=q.front();
		q.pop();
		if(u.d>m)continue;
		dt[++sd]=u;
//		v[dt[sd]]=1;
		q.push({u.d+1,u.x*2-1});
		q.push({u.d+1,u.x*2});
	}
}
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	memset(a,' ',sizeof(a));
	cin>>m>>n;
	for(int i=1;i<=n;i++){
		int d,x;
		cin>>d>>x;
		adddlt(d,x);
	}
	for(int i=1;i<=sd;i++){
//		cout<<dt[i].d<<" "<<dt[i].x<<"\n";
//		v[dt[i]]=1;
		v[dt[i]]=1;
//		v.insert({dt[i],1});
//		v.insert(dt[i]);
	}
//	for(auto& i:v){
//		cout<<"Key:("<<i.first.d<<","<<i.first.x<<"),Value:"<<i.second<<"\n";
//	}
//	map<dlt,bool>::iterator it;
//	for(it=v.begin();it!=v.end();it++)
//		cout<<it->first.d<<" "<<it->first.x<<endl;
	for(int i=1,j=1;i<=p[m+1]+1;i+=6,j+=2){
		a[p[m]+1][i]='o';
		a[p[m]+1][i+4]='o';
		v1[1][j]=i;
		v1[1][j+1]=i+4;
		v2[1][j]=p[m]+1;
		v2[1][j+1]=p[m]+1;
		vs[1]+=2;
	}
	int k=1;
	while(k<m){
		for(int i=1;i<=vs[k];i+=2){
			bool f1=1,f2=1;
			int x1=v2[k][i],y1=v1[k][i];
			int x2=v2[k][i+1],y2=v1[k][i+1];
			if(v[dlt{m-k+1,i}])f1=0;
			if(v[dlt{m-k+1,i+1}])f2=0;
//			cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<"\n";
			if(k==1&&!f1)a[x1][y1]=' ';
			if(k==1&&!f2)a[x2][y2]=' ';
			while(y1!=y2){
				x1--;
				y1++;
				x2--;
				y2--;
				if(f1)a[x1][y1]='/';
				if(f2)a[x2][y2]='\\';
			}
			if(f1||f2)a[x1][y1]='o';
			vs[k+1]++;
			v1[k+1][vs[k+1]]=y1;
			v2[k+1][vs[k+1]]=x1;
		}
		k++;
	}
//	for(int i=1;i<=10;i++)
//		cout<<dep[i]<<" ";
//	cout<<"\n";
	for(int i=1;i<=p[m]+1;i++){
		for(int j=1;j<=p[m+1];j++){
			cout<<a[i][j];
		}
		cout<<"\n";
	}
	return 0;
}

/*
4 3
3 2
4 1
3 4

4 1
3 2
*/



2024/8/1 12:35
加载中...