답안 #796511

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
796511 2023-07-28T13:01:02 Z vjudge1 Lamps (JOI19_lamps) C++17
0 / 100
25 ms 35672 KB

// Author : حسن

#include <bits/stdc++.h>



using namespace std;

#define TL ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define rall(s) s.rbegin(),s.rend()
#define all(s) s.begin(),s.end()
#define pb push_back
#define fi first
#define se second
#define ll long long
#define ld long double
#define YES cout<<"YES\n"
#define Yes cout<<"Yes\n"
#define yes cout<<"yes\n"
#define NO cout<<"NO\n"
#define No cout<<"No\n"
#define no cout<<"no\n"


const int N = 1e6 + 9 , mod = 1e9 + 7;
ll c[N] = {} , d[N] = {} , a[N] = {}, b[N] = {} , dp[N][3];

void solve(){
    ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
    cin>>n;
    string a , b;
    cin>>a>>b;
    for(i = 0; i < n; i++){
        x = a[i] - '0';
        y = b[i] - '0';
        if(i == 0){
            if(a[i] == b[i]){
                dp[i][x] = 1;
                dp[i][1 - x]  = dp[i][2] = 2;
            }else {
                dp[i][1 - x] = 1;
                dp[i][x] = 2;
                dp[i][2] = 1;
            }
        }else {
            if(a[i] == b[i]){
                dp[i][x] = min(d[i - 1] + 1  , dp[i - 1][x]);
                dp[i][1 - x] = dp[i][2] = d[i - 1] + 2;
                dp[i][1 - x] = min(dp[i][1 - x] , dp[i - 1][1 - x] + 1 - (b[i - 1] != (1 - x )));
                dp[i][2] = min(dp[i][2] , dp[i - 1][2] + 1 - (a[i - 1] == b[i - 1]));
            }else {
                dp[i][1 - x] = 1 + d[i - 1];
                dp[i][x] = 2 + d[i - 1];
                dp[i][2] = 1 + d[i - 1];
                dp[i][1 - x] = min(dp[i][1 - x] , dp[i - 1][1 - x]);
                dp[i][x] = min(dp[i][x] , dp[i - 1][x] + 1 - (b[i - 1] == b[i]));
                dp[i][2] = min(dp[i][2] , dp[i - 1][2]);
            }
        }
        d[i] = min({dp[i][0] , dp[i][1] , dp[i][2]});
        if(i == 0 && a[i] == b[i])
            d[i] = 0;
        if(a[i] == b[i] && i)
            d[i] = min(d[i], d[i - 1]);
    }
    //cout<<dp[2][0]<<"\n";
    //cout<<dp[5][1]<<"\n";
    //cout<<dp[7][1]<<"\n";
    cout<<d[n - 1];
}

int main(){

     TL;
     /*
     #ifndef ONLINE_JUDGE
     freopen("input.txt", "r", stdin);
     freopen("output.txt", "w", stdout);
     #endif
     */
int t = 1;
//cin>>t;

while(t--)
     {
     solve();
     }

}
// Author : حسن

Compilation message

lamp.cpp: In function 'void solve()':
lamp.cpp:31:8: warning: unused variable 'q' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |        ^
lamp.cpp:31:16: warning: unused variable 'j' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                ^
lamp.cpp:31:20: warning: unused variable 'm' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                    ^
lamp.cpp:31:28: warning: unused variable 'z' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                            ^
lamp.cpp:31:32: warning: unused variable 's' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                ^
lamp.cpp:31:40: warning: unused variable 'f' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                        ^
lamp.cpp:31:43: warning: unused variable 'l' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                           ^
lamp.cpp:31:47: warning: unused variable 'r' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                               ^
lamp.cpp:31:51: warning: unused variable 'k' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                                   ^
lamp.cpp:31:59: warning: variable 'y' set but not used [-Wunused-but-set-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                                           ^
lamp.cpp:31:63: warning: unused variable 'mn' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                                               ^~
lamp.cpp:31:76: warning: unused variable 'mx' [-Wunused-variable]
   31 |     ll q , i , j , m , n , z , s  = 0, f, l , r , k , x , y , mn  = 1e18 , mx = 0;
      |                                                                            ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Incorrect 0 ms 212 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Incorrect 0 ms 212 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 23 ms 35616 KB Output is correct
8 Incorrect 25 ms 35672 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 328 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Incorrect 0 ms 212 KB Output isn't correct
9 Halted 0 ms 0 KB -