Submission #596740

#TimeUsernameProblemLanguageResultExecution timeMemory
596740czhang2718Lamps (JOI19_lamps)C++17
100 / 100
61 ms24100 KiB
#include "bits/stdc++.h" using namespace std; const int N=1e6; int n; string s, t; int a[N], b[N]; int dp[N][3]; int main(){ cin.tie(0)->sync_with_stdio(0); cin >> n >> s >> t; for(int i=0; i<n; i++){ a[i]=s[i]=='1'; b[i]=t[i]=='1'; for(int j=0; j<3; j++) dp[i][j]=1e9; } dp[0][0]=1+b[0]; dp[0][1]=1+!b[0]; dp[0][2]=a[0]^b[0]; // for(int k=0; k<3; k++) cout << dp[0][k] << " "; // cout << "\n"; for(int i=1; i<n; i++){ for(int j=0; j<3; j++){ for(int k=0; k<3; k++){ int old=(j<2?j:a[i-1]); int val=(k<2?k:a[i]); dp[i][k]=min(dp[i][k], dp[i-1][j]+(j!=1 && k==1) + (j!=0 && k==0) + ((val^b[i])&&(old==b[i-1]))); } } // for(int k=0; k<3; k++) cout << dp[i][k] << " "; // cout << "\n"; } cout << min({dp[n-1][0], dp[n-1][1], dp[n-1][2]}); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...