题目链接
CodeForce 991D. Bishwock
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
vector<string> board(2);
cin >> board[0] >> board[1];
int n = board[0].size();
vector<vector<int>> dp(n + 2, vector<int>(3));
int ans = 0;
for (int i = 1; i <= n; ++i) {
int cnt = (board[0][i - 1] == '0') + (board[1][i - 1] == '0');
if (cnt == 2) {
dp[i][2] = dp[i - 1][0] + 1;
dp[i][0] = dp[i - 1][1];
dp[i][1] = max(dp[i - 1][2], dp[i - 1][0]) + 1;
} else if (cnt == 1) {
dp[i][0] = max(dp[i - 1][2], dp[i - 1][0]);
dp[i][1] = dp[i - 1][0] + 1;
dp[i][2] = dp[i - 1][0];
} else {
dp[i][0] = dp[i][1] = dp[i][2] = dp[i - 1][0];
}
ans = max(ans, dp[i][0]);
if (cnt == 2) {
ans = max(ans, dp[i - 1][2]);
}
}
printf("%d", ans);
}