제출 #235246

#제출 시각아이디문제언어결과실행 시간메모리
235246Nodir_BobievLamps (JOI19_lamps)C++17
6 / 100
1090 ms40640 KiB
/* +----------------------------------------------------------------+ | In the name of Allah, the most Gracious and the most Merciful. | +----------------------------------------------------------------+ Our hearts quake with fear of you Our hearts wake with love for you And to Islam we must be true In everything we think and do. -------------------------------- When your heart is breaking And your pain makes you fall Remember just remember Allah Sees it all. */ # include <bits/stdc++.h> # define FILE using namespace std; const int N = 1e6 + 100; const int inf = 9; string A,B; int n; vector < vector < int > > dp[N]; char op(int x, char c){ if( x == 0 ) return c; if( x == 1 ) return '0'; if( x == 2 ) return '1'; if( c == '1' ) return '0'; return '1'; } int get( vector < int > &v1, vector < int >&v2, int i=0, int j=0 ){ if( i == (int)v1.size() || j == (int)v2.size()-1)return 0; int mx = 0; if( v1[i] == v2[j] ) mx = get(v1, v2, i+1, j+1) + 1; mx = max({mx, get(v1, v2, i+1, j), get(v1, v2, i, j+1)}); return mx; } int main(){ # ifdef FILEs freopen( "input.txt", "r", stdin ); freopen( "output.txt", "w", stdout ); # endif ios_base::sync_with_stdio(false); cin >> n >> A >> B; A = '0' + A; B = '0' + B; dp[0].push_back({0}); for( int i = 1; i <= n; i ++ ){ for( int a = 0; a < 4; a ++ ){ for( int b = 0; b < 4; b ++ ){ for( int c = 0; c < 4; c ++ ){ if( op(c,op(b,op(a,A[i]))) != B[i] ) continue; vector < int > vv; if( a ) vv.push_back( a ); if( b ) vv.push_back( b ); if( c ) vv.push_back( c ); int mn = inf; for( auto vc: dp[i-1] ){ mn = min(mn, vc.back()-get(vv, vc)+(int)vv.size()); } if( mn != inf ){ vv.push_back(mn); dp[i].push_back(vv); } } } } } int ans = inf; for( auto vc: dp[n] )ans = min( ans, vc.back() ); cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...