0分求调,手写list+推式子
查看原帖
0分求调,手写list+推式子
918478
All_Wrong_Answer楼主2024/12/27 21:57

rt,悬关,输出不了东西

#include <bits/stdc++.h>
using namespace std;
#define int long long
int x;
int a,b,c;
struct sx_list{
	int qc;
	int hj;
	int sum;
}li[1000005];
void jx(int f,int zx,int s,int dy,int zh){
	//cout<<endl;
	//for(int i=1;i<=a;i++){
	//	cout<<"          "<<li[i].sum<<" "<<li[i].qc<<" "<<li[i].hj<<endl<<endl;
	//}
	li[0].hj=li[zx].sum;
	if(s==c+1) return ;
	if(f==0){
		li[li[zx].qc].hj=li[li[zx].hj].sum;
		li[li[zx].hj].qc=li[li[zx].qc].sum;
		li[zx].hj=li[dy].sum;
		li[dy].qc=li[zx].sum;
		li[zx].qc=0;
		jx(1,li[li[zx].qc].sum,s+1,li[zx].sum,zh);
	}
	else{
		li[li[zx].qc].hj=li[li[zx].hj].sum;
		li[li[zx].hj].qc=li[li[zx].qc].sum;
		li[zx].qc=li[zh].sum;
		li[zh].hj=li[zx].sum;
		li[zx].hj=0;
		jx(1,li[li[zx].hj].sum,s+1,dy,li[zx].sum);
	}
}
void csh(){
	li[0].sum=0;
	for(int j=1;j<=a;j++){
		li[j].qc=li[j-1].sum;
		li[j].sum=j;
		li[j-1].hj=li[j].sum;
	}
}
signed main(){
	cin>>x;
	for(int i=1;i<=x;i++){
		memset(li,0,sizeof(li));
		cin>>a>>b>>c;
		//cout<<endl;
		c%=(2*a);
	    csh();
		jx(b,(a+1)/2,1,1,a);
		int aa=li[0].hj;
		//cout<<"\n\n                 "<<a<<"\n\n";
		for(int j=1;j<=a;j++){
			cout<<aa<<" ";
			aa=li[a].hj;
		}
		cout<<endl;
	}
	return 0;
}
2024/12/27 21:57
加载中...