| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1292273 | wedonttalkanymore | Lamps (JOI19_lamps) | C++20 | 35 ms | 49464 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int long long
#define pii pair<ll, ll>
#define fi first
#define se second
const ll N = 1e6 + 5, inf = 1e18, mod = 1e9 + 7, block = 320, lim = 19;
int n;
string A, B;
int a[N], b[N];
int dp[N][4];
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
if (fopen(".inp", "r")) {
freopen(".inp", "r", stdin);
freopen(".out", "w", stdout);
}
cin >> n >> A >> B;
for (int i = 0; i < n; i++) {
a[i + 1] = A[i] - '0';
b[i + 1] = B[i] - '0';
}
dp[1][0] = 1 + ((0 ^ b[1]) == 1);
dp[1][1] = 1 + ((1 ^ b[1]) == 1);
dp[1][2] = ((a[1] ^ b[1]) == 1);
for (int i = 2; i <= n; i++) {
// off
dp[i][0] = dp[i][1] = dp[i][2] = inf;
dp[i][0] = min(dp[i][0], dp[i - 1][0] + (b[i] == 1 && b[i - 1] == 0));
dp[i][0] = min(dp[i][0], dp[i - 1][1] + (b[i] == 1 && b[i - 1] == 1) + 1);
dp[i][0] = min(dp[i][0], dp[i - 1][2] + (b[i] == 1 && (a[i - 1] ^ b[i - 1]) == 0) + 1);
// on
dp[i][1] = min(dp[i][1], dp[i - 1][0] + (b[i] == 0 && b[i - 1] == 0) + 1);
dp[i][1] = min(dp[i][1], dp[i - 1][1] + (b[i] == 0 && b[i - 1] == 1));
dp[i][1] = min(dp[i][1], dp[i - 1][2] + (b[i] == 0 && (a[i - 1] ^ b[i - 1]) == 0) + 1);
// flip
dp[i][2] = min(dp[i][2], dp[i - 1][0] + ((a[i] ^ b[i]) == 1 && b[i - 1] == 0));
dp[i][2] = min(dp[i][2], dp[i - 1][1] + ((a[i] ^ b[i]) == 1 && b[i - 1] == 1));
dp[i][2] = min(dp[i][2], dp[i - 1][2] + ((a[i] ^ b[i]) == 1 && (a[i - 1] ^ b[i - 1]) == 0));
}
cout << min({dp[n][0], dp[n][1], dp[n][2]});
return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
