Submission #121965

#TimeUsernameProblemLanguageResultExecution timeMemory
121965KLPPLamps (JOI19_lamps)C++14
100 / 100
153 ms28136 KiB
#include<bits/stdc++.h> using namespace std; typedef long long int lld; typedef pair<lld,lld> pii; #define rep(i,a,b) for(int i=a;i<b;i++) #define trav(a,v) for(auto a:v) int DP[2000000][2][3]; int diff[2000000]; int zeros[2000000]; int ones[2000000]; string A,B; int valid(int i, int j, int k){ if(k==0){ //cout<<(A[i]==B[i])<<endl; return ((A[i]==B[i])+j)%2; } return ((B[i]==(k-1+'0'))+j)%2; } int main(){ int n; cin>>n; cin>>A>>B; rep(i,0,n+1){ rep(j,0,2){ rep(k,0,3){ DP[i][j][k]=10000000; } } } DP[0][0][0]=0; /*diff[0]=0; zeros[0]=0; ones[0]=0; rep(i,0,n){ diff[i+1]=diff[i]+(A[i]==B[i]); zeros[i+1]=zeros[i]+(B[i]=='0'); ones[i+1]=ones[i]+(B[i]=='1'); //cout<<diff[i+1]<<" "<<zeros[i+1]<<" "<<ones[i+1]<<endl; }*/ //cout<<valid(0,1,0)<<endl; rep(i,1,n+1){ rep(j,0,2){ rep(k,0,3){ if(valid(i-1,j,k)){ rep(l,0,2){ rep(m,0,3){ DP[i][j][k]=min(DP[i][j][k],DP[i-1][l][m]+((j==1)&&(l==0))+((k>0)&&(m!=k))); } } } } } } int ans=100000000; /*rep(i,0,n+1){ rep(j,0,2){ rep(k,0,3){ cout<<DP[i][j][k]<<" "; }cout<<endl; }cout<<endl; }*/ rep(j,0,2){ rep(k,0,3)ans=min(ans,DP[n][j][k]); } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...