社区讨论
96pts 求助
P7915[CSP-S 2021] 回文参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lobdwam5
- 此快照首次捕获于
- 2023/10/29 19:24 2 年前
- 此快照最后确认于
- 2023/11/04 01:05 2 年前
第17个点TLE了
CPP#include<bits/stdc++.h>
using namespace std;
int a[1000005],v[1000005],t,n,L,R;
int calc(int l,int r,int x,string s1,string s2){
memset(v,0,sizeof(v));
deque<int>q1,q2;
for(int i=l;i<x;++i)q1.push_back(a[i]);
for(int i=x+1;i<=r;++i)q2.push_back(a[i]);
for(int i=2;i<=n;++i){
if(q2.size()&&!v[q2.back()]&&(q1.size()&&q1.back()==q2.back()||q2.size()>1&&q2.front()==q2.back())){
if(q1.size()&&q1.back()==q2.back())q1.pop_back(),s2=s2+"L";
else q2.pop_front(),s2=s2+"R";
s1=s1+"R",v[q2.back()]=1,q2.pop_back();
}
else if(q1.size()&&!v[q1.front()]&&(q1.size()>1&&q1.front()==q1.back()||q2.size()&&q1.front()==q2.front())){
if(q1.size()>1&&q1.front()==q1.back())q1.pop_back(),s2=s2+"L";
else q2.pop_front(),s2=s2+"R";
s1=s1+"L",v[q1.front()]=1,q1.pop_front();
}
else return 0;
}
reverse(s2.begin(),s2.end());
cout<<s1<<s2<<"\n";
return 1;
}
main(){
for(scanf("%d",&t);t--;){
scanf("%d",&n);
for(int i=1;i<=2*n;++i)scanf("%d",a+i);
for(int i=1;i<=2*n;++i)a[i]-a[1]||(L=i),a[i]-a[2*n]||i-2*n&&(R=i);
if(!calc(2,2*n,L,"L","L")&&!calc(1,2*n-1,R,"R","L"))puts("-1");
}
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...