水质检测
作者:
Shang8
,
2025-04-13 14:22:17
· 河南
,
所有人可见
,
阅读 6
#include <bits/stdc++.h>
//#define int long long
using namespace std;
#define ll long long
const int N = 1e6 + 10;
string s1, s2;
ll vt[N];
ll sum;
/*
.#.#.#...
.##.....#
.##.##
......
*/
signed main() {
cin >> s1 >> s2;
for (int i = 0; i < (ll)s1.size(); i++) {
if (s1[i] == '#') {
vt[i] = vt[i] + 1;
sum++;
}
if (s2[i] == '#') {
vt[i] = vt[i] + 2;
sum++;
}
// cout << vt[i] << " ";
}
// cout << endl;
ll ops = 0;
for (int i = 0; i < (ll) s1.size(); i++) {
if (vt[i] != 0) {
ops = i;
break;
}
}
// cout << ops << endl;
ll sm = 0;
ll dan = -1;
ll disdan = -1;
ll dbl = -1;
ll disdbl = -1;
ll ans = 0;
for (ll i = ops; i < (ll) s1.size(), sm < sum; i++) {
if (vt[i] == 1) {
sm++;
if (dan != -1) {
if (dan == 1) {
ans += (i - disdan - 1);
dan = 1;
disdan = i;
continue;
} else if (dan == 2) {
ans += (i - disdan);
dbl = 1;
dan = -1;
disdbl = i;
continue;
}
// cout << ans << " sm" << sm << endl;
} else if (dbl != -1) {
ans += (i - disdbl - 1);
dbl = -1;
dan = 1;
disdan = i;
continue;
}
dan = 1;
disdan = i;
// dan = 1;
// disdan = i;
} else if (vt[i] == 2) {
sm++;
if (dan != -1) {
if (dan == 2) {
ans += (i - disdan - 1);
dan = 2;
disdan = i;
} else if (dan == 1) {
ans += (i - disdan);
dan = -1;
dbl = 1;
disdbl = i;
}
continue;
} else if (dbl != -1) {
ans += (i - disdbl - 1);
dbl = -1;
dan = 2;
disdan = i;
continue;
}
dan = 2;
disdan = i;
// dan = 2;
// disdan = i;
} else if (vt[i] == 3) {
sm += 2;
if (dan != -1) {
ans += (i - disdan - 1);
dan = -1;
} else if (dbl != -1) {
ans += (i - disdbl - 1);
}
dbl = 1;
disdbl = i;
}
}
cout << ans << endl;
return 0;
}
/*
..#...
.....#
..###.
.....#
..####
.....#
#..#.#
#...#.
*/