12分求调,谢谢;
查看原帖
12分求调,谢谢;
640477
biophitma_wby楼主2024/10/21 19:34

不知道为啥,大样例中

20

17 3 16 1 9 12 19 6 8 2 20 14 18 10 5 11 15 7 13 4 4 13 7 15 11 5 10 18 17 14 20 2 8 6 19 12 9 1 16 3 过不了?

#include<bits/stdc++.h>
#include<deque>
using namespace std;
const int N=1000005;
int T,n,k,a[N];
deque<int> c,d;
bool ans[N];int len=0;
int main(){
	//freopen("palin.in","r",stdin);
	//freopen("palin.out","w",stdout);
	scanf("%d",&T);
	while(T--){
		len=0;
		c.erase(c.begin(),c.end());
		d.erase(d.begin(),d.end());
		scanf("%d%d",&n,&a[1]);
		for(int i=2;i<=2*n;i++){
			scanf("%d",&a[i]);
			if(a[i]==a[1])k=i;
		}
		for(int i=2;i<k;i++){
			c.push_back(a[i]);
		}
		for(int i=k+1;i<=2*n;i++){
			d.push_front(a[i]);
		}
		ans[++len]=0;bool TorF=false;
		while(!c.empty()&&!d.empty()){
			TorF=true;
			//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
			if(c.front()==d.back()){
				ans[++len]=0;
				ans[2*n-len+1]=1;
				c.pop_front();
				d.pop_back();
			}else if(c.back()==d.front()){
				ans[++len]=1;
				ans[2*n-len+1]=0;
				c.pop_back();
				d.pop_front();
			}else if(c.front()==c.back()){
				ans[++len]=0;
				ans[2*n-len+1]=0;
				c.pop_front(),c.pop_back();
			}else if(d.front()==d.back()){
				ans[++len]=1;
				ans[2*n-len+1]=1;
				d.pop_front(),d.pop_back();
			}else{
				TorF=false;
				break;
			}
		}
		if(TorF==false){
			//cout<<"-----"<<endl;
			len=0;
			c.erase(c.begin(),c.end());
			d.erase(d.begin(),d.end());
			for(int i=1;i<=2*n-1;i++){
				if(a[i]==a[2*n])k=i;
			}
			for(int i=1;i<k;i++){
				c.push_back(a[i]);
			}
			for(int i=k+1;i<2*n;i++){
				d.push_front(a[i]);
			}
			ans[++len]=1;
			TorF=false;
			while(!c.empty()||!d.empty()){
				TorF=true;
				//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
				if(c.front()==d.back()){
					ans[++len]=0;
					ans[2*n-len+1]=1;
					c.pop_front();
					d.pop_back();
				}else if(c.back()==d.front()){
					ans[++len]=1;
					ans[2*n-len+1]=0;
					c.pop_back();
					d.pop_front();
				}else if(c.front()==c.back()&&c.size()!=1){
					ans[++len]=0;
					ans[2*n-len+1]=0;
					c.pop_front(),c.pop_back();
				}else if(d.front()==d.back()&&d.size()!=1){
					ans[++len]=1;
					ans[2*n-len+1]=1;
					d.pop_front(),d.pop_back();
				}else{
					TorF=false;
					break;
				}
			}
			if(TorF==false){
				printf("-1\n");
			}else{
				for(int i=1;i<=2*n-1;i++){
					if(ans[i]==0)printf("L");
					else printf("R");
				}printf("L\n");	
			}
		}else{
			for(int i=1;i<=2*n-1;i++){
				if(ans[i]==0)printf("L");
				else printf("R");
			}printf("L\n");		
		}
	}
	return 0;
} 
2024/10/21 19:34
加载中...