12tps,求助!
查看原帖
12tps,求助!
907430
corner_xiejunqi楼主2024/10/14 21:38

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int t,n;
int a[N];
char res[N];
bool work(int l1,int r1,int l2,int r2){
	for(int i=1;i<=n;i++){
		if(l1<=r1&&((l2<=r2&&a[l1]==a[l2])||(l1<r1&&a[l1]==a[r1]))){
			if(l1<r1&&a[l1]==a[r1]){
				l1++; 
				r1++;
				res[i]='L'; 
				res[2*(n-1)-i+1]='L';
			}else{
				l1++; 
				l2++;
				res[i]='L'; 
				res[2*(n-1)-i+1]='R';	
			}
		}else if(l2<=r2&&((l1<=r1&&a[r2]==a[r1])||(l2<r2&&a[l2]==a[r2]))){
			if(l2<r2&&a[l2]==a[r2]){
				l2++;
				r2++;
				res[i]='R'; 
				res[2*(n-1)-i+1]='R';
			}else{
				r2--; 
				r1--;
				res[i]='R'; 
				res[2*(n-1)-i+1]='L';
			}
		}else return 0;
	}
	return 1;
}
int main(){
	//1、声明变量,输入
	cin>>t;
	while(t--){
		cin>>n;
		int p1=-1,p2=-1;
		for(int i=1;i<=2*n;i++) cin>>a[i];
		memset(res,0,sizeof res);
		for(int i=2;i<=2*n;i++){
			if(a[1]==a[i]){
				p1=i;
				break;
			}
		}
		for(int i=1;i<=2*n-1;i++){
			if(a[2*n]==a[i]){
				p2=i;
				break;
			}
		}
		if(work(2,p1-1,p1+1,2*n)){
			for(int i=1;i<=2*n;i++){
				cout<<res[i];
			}
			cout<<endl;
		}else if(work(1,p2-1,p2+1,2*n-1)){
			for(int i=1;i<=2*n;i++){
				cout<<res[i];
			}
			cout<<endl;
		}else{
			cout<<-1<<endl;
		}
	}
	//2、计算过程
	
	//3、输出
	
	return 0;
}
2024/10/14 21:38
加载中...