求hack
查看原帖
求hack
539551
封禁用户楼主2024/12/3 22:05

赛时思路,已AC,但怕被CCF数据制裁

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int t, n, pos1[N], pos2[N], cnt1[N][2], cnt2[N][2]; 
int main() {
	cin >> t;
	while(t--) {
		int l1 = 1, l2 = 1, ans = 0;
		memset(cnt1, 0, sizeof(cnt1));memset(cnt2, 0, sizeof(cnt2));memset(pos1, 0, sizeof(pos1));memset(pos2, 0, sizeof(pos2));
		string s1, s2, t1, t2;
		cin >> n >> s1 >> s2 >> t1 >> t2;
		for (int i = 0; i < n; i++) {
			if (t1[i] == '0') l1++;
			else pos1[i] = l1;
			if (t2[i] == '0') l2++;
			else pos2[i] = l2;
		}
		for (int i = 0; i < n; i++) {if (pos1[i]) cnt1[pos1[i]][s1[i] - '0']++; if (pos2[i]) cnt2[pos2[i]][s2[i] - '0']++;} 
		for (int i = 0; i < n; i++) {
			if (t1[i] == '0' && t2[i] == '0' && s1[i] == s2[i]) ans++;
			else if (t1[i] == '1' && t2[i] == '0' && cnt1[pos1[i]][s2[i] - '0']) cnt1[pos1[i]][s2[i] - '0']--, ans++;
			else if (t1[i] == '0' && t2[i] == '1' && cnt2[pos2[i]][s1[i] - '0']) cnt2[pos2[i]][s1[i] - '0']--, ans++;
		}
		for (int i = 0; i < n; i++) {
			if (t1[i] == '1' && t2[i] == '1') {
				if (cnt1[pos1[i]][0] && cnt2[pos2[i]][0]) cnt2[pos2[i]][0]--, cnt1[pos1[i]][0]--, ans++;
				else if (cnt1[pos1[i]][1] && cnt2[pos2[i]][1]) cnt2[pos2[i]][1]--, cnt1[pos1[i]][1]--, ans++;
			} 
		}
		printf("%d\n", ans);
	}
	return 0;
}
2024/12/3 22:05
加载中...