比赛 2025.1.14 评测结果 WWWWAAAAAAAAWWWWWWWW
题目名称 编辑字符串 最终得分 40
用户昵称 徐诗畅 运行时间 0.982 s
代码语言 C++ 内存使用 3.67 MiB
提交时间 2025-01-14 21:30:34
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int t,n;
string s1,s2,t1,t2;
int main(){
    freopen("edit.in","r",stdin);
    freopen("edit.out","w",stdout);
    cin>>t;
    while(t--){
        scanf("%d",&n);
        cin>>s1>>s2>>t1>>t2;
        int flag=1,ans=0;
        for(int i =1;i<n;i++){
            if(s1[i]!=s1[i-1]){flag=0; break;}
        }
        if(flag){
            int tmp=0;
            for(int i = 0;i<n;i++)
            if(s2[i]=='1') ans++;
            printf("%d\n",s1[1]=='1'?ans:n-ans);
            continue;
        }
        int num1=0,len=0,num2=0;
        for(int i = 0;i<n;i++){
            if(t1[i]=='0'){
                ans+=(s1[i]==s2[i]);
                ans+=min(num1,num2);
                ans+=len-max(num1,num2); 
                len=num1=num2=0;
            }
            else{
                if(s1[i]=='1') num1++;
                if(s2[i]=='1') num2++;
                len++;
            }
        }
        if(len!=0){
            ans+=min(num1,num2);
            ans+=len-max(num1,num2); 
        }
        printf("%d\n",ans);
    }
    return 0;
}