记录编号 608541 评测结果 WWWWWWWWWWWWWWWAWAWWWWWWW
题目名称 3621.[CSP 2021S]回文 最终得分 8
用户昵称 Gravatar29 是否通过 未通过
代码语言 C++ 运行时间 1.244 s
提交时间 2025-10-26 17:10:07 内存使用 8.48 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+2;
int a[N]={0},t,n;
char c[N]={0};
bool flag;
int dfs(int x,int l,int r,int L,int R){
	if(x==n+1) return 1;
	//1
	if(a[l]==a[r]&&r>l){
		l++;
		r++;
		c[x]='L';
		c[2*n-x+1]='L'; 
		dfs(x+1,l,r,L,R);
	}
	else if(a[l]==a[L]&&r>l&&R>L){
		l++;
		L++;
		c[x]='L';
		c[2*n-x+1]='R'; 
		dfs(x+1,l,r,L,R);
	}
	else if(a[R]==a[r]&&r>l&&R>L){
		R--;
		r--;
		c[x]='R';
		c[2*n-x+1]='L'; 
		dfs(x+1,l,r,L,R);
	}
	else if(a[R]==a[L]&&R>L){
		R--;
		L++;
		c[x]='R';
		c[2*n-x+1]='R'; 
		dfs(x+1,l,r,L,R);
	}	
	
	return 0;
}
int main(){
	cin>>t;
	while(t--){
		memset(a,0,sizeof(a));
		memset(c,0,sizeof(c));
		flag=0;
		cin>>n;
		for(int i=1;i<=2*n;i++) cin>>a[i];
		int r=2;
		while(a[r]!=a[1]) r++;
		if(dfs(2,1,r,r+2,2*n)==0){
			r=2;
			while(a[r]!=a[2*n]) r++;
			if(dfs(2,1,r,r+2,2*n)==0){
				cout<<-1<<endl;
				return 0;
			}
		}
		c[1]=c[2*n]='L';
		for(int i=1;i<=2*n;i++) cout<<c[i];
		cout<<"\n";
	}
	return 0;
}