求助
查看原帖
求助
576934
Kevin_Mamba楼主2023/7/2 11:31

可能复制是出问题了,或可能思路就有问题。

#include<bits/stdc++.h>
#define il inline
#define re register
using namespace std;

const int N=2e5+10;

int T,n,p,q;

char a[N],b[N],c[N];

int main() {
	cin>>T;
	while(T--) {
		cin>>n>>(a+1)>>(b+1)>>(c+1);
		p=1,q=1;
		for(re int i=1;i<=n*2;i++) {
			if(b[p]==a[i]) p++;
			if(c[q]==a[i]) q++;
		}
		if(n*4-p+1<=3*n) {
			for(re int i=1;i<=n*2;i++) putchar(a[i]);
			for(re int i=p;i<=n*2;i++) putchar(b[i]);
			putchar('\n');
			continue;
		}
		if(n*4-q+1<=3*n) {
			for(re int i=1;i<=n*2;i++) putchar(a[i]);
			for(re int i=q;i<=n*2;i++) putchar(c[i]);
			putchar('\n');
			continue;			
		}
		p=1,q=1;
		for(re int i=1;i<=n*2;i++) {
			if(a[p]==b[i]) p++;
			if(c[q]==b[i]) q++;
		}
		if(n*4-p+1<=3*n) {
			for(re int i=1;i<=n*2;i++) putchar(b[i]);
			for(re int i=p;i<=n*2;i++) putchar(a[i]);
			putchar('\n');
			continue;
		}
		if(n*4-q+1<=3*n) {
			for(re int i=1;i<=n*2;i++) putchar(b[i]);
			for(re int i=q;i<=n*2;i++) putchar(c[i]);
			putchar('\n');
			continue;			
		}
		p=1,q=1;
		for(re int i=1;i<=n*2;i++) {
			if(a[p]==c[i]) p++;
			if(b[q]==c[i]) q++;
		}
		if(n*4-p+1<=3*n) {
			for(re int i=1;i<=n*2;i++) putchar(c[i]);
			for(re int i=p;i<=n*2;i++) putchar(a[i]);
			putchar('\n');
			continue;
		}
		for(re int i=1;i<=n*2;i++) putchar(c[i]);
		for(re int i=q;i<=n*2;i++) putchar(b[i]);
		putchar('\n');
		continue;			
	}
	return 0;
}

2023/7/2 11:31
加载中...