92pts,WA#6#10,很是不解?
查看原帖
92pts,WA#6#10,很是不解?
640477
biophitma_wby楼主2024/10/21 20:00

经历从0到16pts到20pts到32pts到40pts的历程!!!

#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()){
			//cout<<len<<endl;
			TorF=true;
			//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
			//cout<<(!c.empty()&&!d.empty())<<endl;
			if(!c.empty()&&!d.empty()){
				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;
				}
			}else{
				if(!c.empty()){
					if(c.front()==c.back()){
						ans[++len]=0;
						ans[2*n-len+1]=0;
						c.pop_front(),c.pop_back();	
					}else{
						TorF=false;
						break;
					}
				}else if(!d.empty()){
					if(d.front()==d.back()){
						ans[++len]=1;
						ans[2*n-len+1]=1;
						d.pop_front(),d.pop_back();	
					}else{
						TorF=false;
						break;
					}
				}else{
					TorF=false;
					break;
				}
			}
		}
		if(TorF==false){
			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()){
				//cout<<len<<endl;
				TorF=true;
				//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
				//cout<<(!c.empty()&&!d.empty())<<endl;
				if(!c.empty()&&!d.empty()){
					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;
					}
				}else{
					if(!c.empty()){
						if(c.front()==c.back()){
							ans[++len]=0;
							ans[2*n-len+1]=0;
							c.pop_front(),c.pop_back();	
						}else{
							TorF=false;
							break;
						}
					}else if(!d.empty()){
						if(d.front()==d.back()){
							ans[++len]=1;
							ans[2*n-len+1]=1;
							d.pop_front(),d.pop_back();	
						}else{
							TorF=false;
							break;
						}
					}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 20:00
加载中...