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