50分求调
查看原帖
50分求调
1285071
love__yuanshen楼主2024/12/17 10:09
#include<bits/stdc++.h>
using namespace std;
long long T,n,l,f,l1,l2,x=0,y,f1,f2;
string s1,s2,t1,t2;
char s;
int main(){
	cin>>T;
	while(T--){
		cin>>n;
		cin>>s1>>s2>>t1>>t2;
		x=0;
		l=0;
		y=s1[0];
		for(long long i=1;i<n;i++){
			if(s1[i]!=y){
				x=1;
				break;
			}
		}
		if(x=0){
			for(long long i=0;i<n;i++){
				if(s1[i]==s2[i]){
					l++;
				}
			}
		}
		else if(t1==t2){
			l1=0;
			l2=0;
			f=0;
			for(long long i=0;i<n;i++){
				if(t1[i]=='0'){
					if(f!=0){
						l+=f-(max(l1,l2)-min(l1,l2));
						f=0;
						l1=0;
						l2=0;
					}
					if(s1[i]==s2[i]){
						l++;
					}
				}
				else{
					f++;
					if(s1[i]=='0'){
						l1++;
					}
					if(s2[i]=='0'){
						l2++;
					}
				}
			}
			l+=f-(max(l1,l2)-min(l1,l2));
			f=0;
			l1=0;
			l2=0;
		}
		else{
			l1=0;
			l2=0;
			f=0;
			for(long long i=0;i<n;i++){
				if((t1[i]=='0'||(t1[i-1]=='0'&&t1[i+1]=='0'))&&(t2[i]=='0'||(t2[i-1]=='0'&&t2[i+1]=='0'))){
					if(f!=0){
						l+=f-(max(l1,l2)-min(l1,l2));
						f=0;
						l1=0;
						l2=0;
					}
					if(s1[i]==s2[i]){
						l++;
					}
				}
				else{
					f++;
					if(s1[i]=='0'){
						l1++;
					}
					if(s2[i]=='0'){
						l2++;
					}
				}
			}
			l+=f-(max(l1,l2)-min(l1,l2));
			f=0;
			l1=0;
			l2=0;
		}
		cout<<l<<endl;
	}
	return 0;
}
2024/12/17 10:09
加载中...