是一道水题
虽然看起来像是DP,但其实是贪心
扫一遍就A了
QwQ
#include <cstdio> #include <algorithm> #include <cstring> #include <set> #include <map> using namespace std; int n,a[1000100],b[1000100],f[1000100]; char ax[1000100],bx[1000100]; int main(){ scanf("%d",&n); scanf("%s",ax+1); scanf("%s",bx+1); for(int i=1;i<=n;i++){ a[i]=ax[i]-'0'; b[i]=bx[i]-'0'; } for(int i=1;i<=n;i++){ if(a[i]!=b[i]){ int midm=0x3f3f3f3f; for(int j=i+1;j<=n;j++) if(a[j]!=b[j]){ midm=j; break; } if(midm-i<=1){ swap(a[i],a[midm]); f[i]=f[i-1]+midm-i; } else{ a[i]=b[i]; f[i]=f[i-1]+1; } } else{ f[i]=f[i-1]; } } // for(int i=1;i<=n;i++) // printf("%d ",f[i]); // printf(" "); printf("%d ",f[n]); return 0; }