关于特殊性质这个思路是否正确
查看原帖
关于特殊性质这个思路是否正确
235901
Always_Remember_It楼主2023/10/20 17:44
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N];
int main(){
	int T;cin>>T;
	while(T--){
		int n;cin>>n>>a[1];
		n*=2;
		int p1=0,p2=0;
		for(int i=2;i<=n;i++){
			cin>>a[i];
			if(a[i]==a[1]) p1=i;
		}
		bool t=1;
		if(a[1]==a[n]){
			for(int i=2;i<=n/2;i++){
				if(a[i]!=a[n-i+1]){
					t=0;
					break;
				}
			}
			if(!t){
				cout<<-1<<endl;
				continue;
			}
			for(int i=1;i<=n;i++){
				cout<<"L";
			}
			cout<<endl;
			continue;
		}
		for(int i=1;i<n;i++){
			if(a[i]==a[n]) p2=i;
		}
		for(int i=2;i<=p1/2;i++){
			if(a[i]!=a[p1-i+1]){
				t=0;
				break;
			}
		}
		if(!t){
			cout<<-1<<endl;
			continue;
		}
		for(int i=p2;i<(n-p2+1)/2+p2;i++){
			if(a[i]!=a[n-i+1]){
				t=0;
				break;
			}
		}
		if(!t){
			cout<<-1<<endl;
			continue;
		}
		for(int i=1;i<=p1/2;i++){
			cout<<"L";
		}
		for(int i=1;i<=(n-p2+1);i++){
			cout<<"R";
		}
		for(int i=1;i<=p1/2;i++){
			cout<<"L";
		}
		cout<<endl;
	}
	return 0;
}
请问这样的思路是否正确,就是判断a串是否是1或2个回文串构成的,若不是则无解,是则左右分别输出,交上去能过特殊性质,但是只输出-1也能过........
2023/10/20 17:44
加载中...