답안 #391351

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
391351 2021-04-18T15:51:17 Z qwerasdfzxcl Lamps (JOI19_lamps) C++14
4 / 100
29 ms 16076 KB
#include <bits/stdc++.h>

typedef long long ll;
using namespace std;
string x, y;
int dp[1001000][3];

int calc(int n){
    for (int i=0;i<n;i++) dp[i][0] = 1e9, dp[i][1] = 1e9, dp[i][2] = 1e9;
    dp[0][0] = 1;
    if (x[0]!=y[0]) dp[0][1] = 1, dp[0][2] = 1;
    else dp[0][2] = 0;
    for (int i=1;i<n;i++){
        if (x[i]==y[i]){
            if (y[i-1]!=y[i]) dp[i][0] = dp[i-1][2]+1;
            else dp[i][0] = min(dp[i-1][0], dp[i-1][2]+1);
            dp[i][2] = dp[i-1][2];
        }
        else{
            if (y[i-1]!=y[i]) dp[i][0] = dp[i-1][2]+1;
            else dp[i][0] = min(dp[i-1][0], dp[i-1][2]+1);
            if (x[i-1]==y[i-1]) dp[i][1] = dp[i-1][2]+1;
            else dp[i][1] = min(dp[i-1][2]+1, dp[i-1][1]);
            dp[i][2] = min(dp[i][0], dp[i][1]);
        }
    }
    //for (int i=0;i<n-1;i++) cout << dp[i][2];
    return dp[n-1][2];
}

int main(){
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);
    int n;
    cin >> n >> x >> y;
    int ans = calc(n);
    int pt1=-1, pt2=-1;
    for (int i=0;i<n;i++) if(x[i]!=y[i]){
        pt1=i; break;
    }
    for (int i=n-1;i>=0;i--) if(x[i]!=y[i]){
        pt2=i; break;
    }
    if (pt1!=-1){
        for (int i=pt1;i<=pt2;i++){
            if (x[i]=='0') x[i] = '1';
            else x[i] = '0';
        }
        ans = min(ans, calc(n)+1);
    }
    cout << ans;
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 320 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Incorrect 1 ms 320 KB Output isn't correct
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 320 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Incorrect 1 ms 320 KB Output isn't correct
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 328 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 20 ms 16064 KB Output is correct
8 Correct 26 ms 16032 KB Output is correct
9 Correct 26 ms 16028 KB Output is correct
10 Correct 28 ms 16032 KB Output is correct
11 Correct 27 ms 16044 KB Output is correct
12 Correct 28 ms 16028 KB Output is correct
13 Correct 29 ms 16076 KB Output is correct
14 Correct 28 ms 16004 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 320 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Incorrect 1 ms 320 KB Output isn't correct
14 Halted 0 ms 0 KB -