比赛 2025.1.14 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 编辑字符串 最终得分 100
用户昵称 wdsjl 运行时间 1.074 s
代码语言 C++ 内存使用 4.46 MiB
提交时间 2025-01-14 19:55:02
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

const int N = 100010;

int T,n,f[N],p[N],q[N],h[N],e[N],g[N],ans;
string s1,s2,t1,t2;

int main(){
    freopen("edit.in","r",stdin);
    freopen("edit.out","w",stdout);
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        cin>>s1>>s2>>t1>>t2;
        p[0]=0;
        q[0]=0;
        if(s1[0]&1)++f[0];
        else ++e[0];
        if(s2[0]&1)++h[0];
        else ++g[0];
        ans=0;
        for(int i=1;i<n;++i){
            if((t1[i]&1)&&(t1[i-1]&1)) p[i]=p[i-1];
            else p[i]=i;
            if(s1[i]&1) ++f[p[i]];
            else ++e[p[i]];
        }
        for(int i=1;i<n;++i){
            if((t2[i]&1)&&(t2[i-1]&1))q[i]=q[i-1];
            else q[i]=i;
            if(s2[i]&1) ++h[q[i]];
            else ++g[q[i]];
        }
        for(int i=0;i<n;++i){
            if(e[p[i]]&&g[q[i]]){
                ++ans;
                --e[p[i]];
                --g[q[i]];
            }
            else if(f[p[i]]&&h[q[i]]){
                ++ans;
                --f[p[i]];
                --h[q[i]];
            }
            else if(e[p[i]]){
                --e[p[i]];
                --h[q[i]];
            }
            else{
                --f[p[i]];
                --g[q[i]];
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}