| 记录编号 |
608541 |
评测结果 |
WWWWWWWWWWWWWWWAWAWWWWWWW |
| 题目名称 |
3621.[CSP 2021S]回文 |
最终得分 |
8 |
| 用户昵称 |
29 |
是否通过 |
未通过 |
| 代码语言 |
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;
}