이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int nx=1e6+5;
int dp[nx][6], n;
string a, b;
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>n>>a>>b;
dp[0][1]=dp[0][2]=dp[0][3]=dp[0][4]=dp[0][5]=1e9;
for (int i=1; i<=n; i++)
{
dp[i][0]=dp[i][1]=dp[i][2]=dp[i][3]=dp[i][4]=dp[i][5]=1e9;
int mn=min({dp[i-1][0], dp[i-1][1], dp[i-1][2], dp[i-1][3], dp[i-1][4], dp[i-1][5]});
if (a[i-1]==b[i-1]) dp[i][0]=mn;
if (b[i-1]=='0') dp[i][1]=min({dp[i-1][1], mn+1, dp[i-1][4]}), dp[i][4]=min({dp[i-1][4], mn+2, dp[i-1][2]+1, dp[i-1][3]+1});
if (b[i-1]=='1') dp[i][2]=min({dp[i-1][2], mn+1, dp[i-1][5]}), dp[i][5]=min({dp[i-1][5], mn+2, dp[i-1][1]+1, dp[i-1][3]+1});
if (a[i-1]!=b[i-1]) dp[i][3]=min({dp[i-1][3], mn+1, dp[i-1][4], dp[i-1][5]});
}
cout<<min({dp[n][0], dp[n][1], dp[n][2], dp[n][3], dp[n][4], dp[n][5]});
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |