Submission #217329

#TimeUsernameProblemLanguageResultExecution timeMemory
217329pit4hLamps (JOI19_lamps)C++14
4 / 100
258 ms3784 KiB
#include<bits/stdc++.h> using namespace std; int dp[2][4][4][4]; int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; string s, t; cin>>n>>s>>t; for(int i=0; i<=1; ++i) { for(int a=0; a<=3; ++a) { for(int b=0; b<=3; ++b) { for(int c=0; c<=3; ++c) { dp[i][a][b][c] = n; } } } } dp[0][0][0][0]=0; for(int i=1; i<=n; ++i) { int v1 = n; for(int a=0; a<=3; ++a) { for(int b=0; b<=3; ++b) { for(int c=0; c<=3; ++c) { dp[i%2][a][b][c]=n; v1 = min(v1, dp[(i+1)%2][a][b][c]); } } } if(s[i-1]==t[i-1]) { dp[i%2][0][0][0] = v1; } for(int a=1; a<=3; ++a) { int v2 = n; for(int j=0; j<=3; ++j) { for(int k=0; k<=3; ++k) { v2 = min(v2, dp[(i+1)%2][a][j][k]); v2 = min(v2, dp[(i+1)%2][j][a][k]); v2 = min(v2, dp[(i+1)%2][j][k][a]); } } if((a==1 && t[i-1]=='0') || (a==2 && t[i-1]=='1') || (a==3 && s[i-1]!=t[i-1])) { dp[i%2][a][0][0] = min(v1+1, v2); } for(int b=1; b<=3; ++b) { if(b==a) continue; int v3 = n; for(int j=0; j<=3; ++j) { v3 = min(v3, dp[(i+1)%2][a][b][j]); v3 = min(v3, dp[(i+1)%2][j][a][b]); } if((a==1 && t[i-1]=='0') || (a==2 && t[i-1]=='1') || (a==3 && ((b==1 && t[i-1]=='1') || (b==2 && t[i-1]=='0')))) { dp[i%2][a][b][0] = min(v1+2, min(v2+1, v3)); } else { continue; } for(int c=1; c<=3; ++c) { if(c==a || c==b) continue; int v4 = dp[(i+1)%2][a][b][c]; dp[i%2][a][b][c] = min(v1+3, min(v2+2, min(v3+1, v4))); } } } } int ans = n; for(int a=0; a<=3; ++a) { for(int b=0; b<=3; ++b) { for(int c=0; c<=3; ++c) { ans = min(ans, dp[n%2][a][b][c]); } } } 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...