猫史档案馆


bcmtj

用户:蒟蒻OIer1048576蒟蒻OIer1048576查看:0 回复:2 评论:0 创建时间:2021-12-06T19:15:33


#include<iostream>
using namespace std;
signed t, n;
signed a[200005], b[200005];
signed main() {
	cin >> t;
	while (t--) {
		bool ok = 0;
		cin >> n;
		for (signed i = 1; i <= (n << 1); i++) {
			cin >> a[i];
		}
		for (signed i = 1; i <= (n << 1); i++) {
			cin >> b[i];
		}
		signed cnt1 = 0, cnt2 = 0;
		for (signed i = 1; i <= (n << 1); i++) {
			if (a[i] - b[i] == 1 || a[i] == 1 && b[i] == 3) { // 判断:A --输--> B
				if (cnt1 < n) { // 改A成B的克
					cnt1++;
					if (b[i] == 1)
						a[i] = 3;
					else if (b[i] == 2)
						a[i] = 1;
					else if (b[i] == 3)
						a[i] = 2;
				}
				else if (cnt2 < n) { // 改B成A的被克
					cnt2++;
					if (b[i] == 1)
						b[i] = 3;
					else if (b[i] == 2)
						b[i] = 1;
					else if (b[i] == 3)
						b[i] = 2;
				}
				else {
					ok = 1;
					break;
				}
			}
			else {
				continue;
			}
		}
		if (ok == 1) {
			signed ans = 0;
			for (signed i = 1; i <= (n << 1); i++) {
				if (a[i] - b[i] == -1 || a[i] == 3 && b[i] == 1) {
					ans++;
				}
				else if (a[i] == b[i]) {
					continue;
				}
				else {
					ans--;
				}
			}
			cout << ans << endl;
			for (signed i = 1; i <= (n << 1); i++) {
				cout << a[i] << " ";
			}
			cout << endl;
			for (signed i = 1; i <= (n << 1); i++) {
				cout << b[i] << " ";
			}
			cout << endl;
		}
		else {
			for (signed i = 1; i <= (n << 1); i++) {
				if (a[i] == b[i]) {
					if (cnt1 < n) {
						cnt1++;
						if (b[i] == 1) {
							a[i] = 3;
						}
						else if (b[i] == 2) {
							a[i] = 1;
						}
						else if (b[i] == 3) {
							a[i] = 2;
						}
					}
					else if (cnt2 < n) {
						cnt2++;
						if (b[i] == 1) {
							b[i] = 2;
						}
						else if (b[i] == 2) {
							b[i] = 3;
						}
						else if (b[i] == 3) {
							b[i] = 1;
						}
					}
					else {
						break;
					}
				}
			}
			signed ans = 0;
			for (signed i = 1; i <= (n << 1); i++) {
				if (a[i] - b[i] == -1 || a[i] == 3 && b[i] == 1) {
					ans++;
				}
				else if (a[i] == b[i]) {
					continue;
				}
				else {
					ans--;
				}
			}
			cout << ans << endl;
			for (signed i = 1; i <= (n << 1); i++) {
				cout << a[i] << " ";
			}
			cout << endl;
			for (signed i = 1; i <= (n << 1); i++) {
				cout << b[i] << " ";
			}
			cout << endl;
		}
	}
	return 0;
}


回复

上一页1 页 / 共 1下一页
一缕余晖一缕余晖

加油-来自一缕余晖制造的渣渣

点赞0


评论


AlcalaAlcala

?哪一题

点赞0


评论