RE求助
  • 板块灌水区
  • 楼主zsh_haha
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/3/24 22:00
  • 上次更新2023/10/23 20:39:22
查看原帖
RE求助
757139
zsh_haha楼主2023/3/24 22:00

rt,P2790

#include<bits/stdc++.h>
using namespace std;
vector<int>a[300];
int num[300],h[300];
void shuchu(int i){
	if(a[i].empty()){
		return;
	}
	int t=a[i].back();
	a[i].pop_back();
	shuchu(i);
	cout<<t<<" ";
}
void fangzhi(int an,int ah,int bn,int bh){
	if(a[an].size()<ah){
		return;
	}
	int t=a[an].back();
	a[an].pop_back();
	fangzhi(an,ah,bn,bh);
	a[bn].push_back(t);
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		a[i].push_back(i);
		num[i]=i;
		h[i]=1;
	}
	while(1){
		string c1,c2;
		int st,en;
		cin>>c1;
		if(c1=="quit"){
			break;
		}
		cin>>st>>c2>>en;
		if(c1=="move"){
			if(c2=="onto"){
				int ah=h[st],an=num[st],bh=h[en],bn=num[en];
				while(a[an].size()>ah){
					int t=a[an].back();
					a[t].push_back(t);
					a[an].pop_back();
					num[t]=t;
					h[t]=a[t].size();
				}
				while(a[bn].size()>bh){
					int t=a[bn].back();
					a[t].push_back(t);
					a[bn].pop_back();
					num[t]=t;
					h[t]=a[t].size();
				}
				a[bn].push_back(a[an].back());
				a[an].pop_back();
				num[an]=bn;
				h[an]=a[bn].size();
			}else{
				int ah=h[st],an=num[st],bh=h[en],bn=num[en];
				while(a[an].size()>ah){
					int t=a[an].back();
					a[t].push_back(t);
					a[an].pop_back();
					num[t]=t;
					h[t]=a[t].size();
				}
				a[bn].push_back(a[an].back());
				a[an].pop_back();
				num[an]=bn;
				h[an]=a[bn].size();
			}
		}else{
			if(c2=="onto"){
				int ah=h[st],an=num[st],bh=h[en],bn=num[en];
				while(a[bn].size()>bh){
					int t=a[bn].back();
					a[t].push_back(t);
					a[bn].pop_back();
					num[t]=t;
					h[t]=a[t].size();
				}
				fangzhi(num[st],h[st],num[en],h[en]);
			}else{
				fangzhi(num[st],h[st],num[en],h[en]);
			}
		}
	}
	for(int i=0;i<n;i++){
		cout<<i<<": ";
		shuchu(i);
		cout<<endl;
	}
	return 0;
}

求大佬指出

2023/3/24 22:00
加载中...