比赛 |
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;
}