45分,求条
查看原帖
45分,求条
1446545
XHZnewlife楼主2024/12/2 21:10
#include<bits/stdc++.h>
#define int long long
#define first first1
#define second second2
using namespace std;
struct STR{
	char word;
	char t;
};
vector <STR> s1;
vector <STR> s2;
struct ch{
	int nfzero,fzero;
	int nfone,fone;
};
ch first1;
ch second2;
int t,n;
void work(){
	char x;int ans=0;
	for(int i=1;i<=n;i++){
		cin>>x;
		s1.push_back({x,0});
	}
	for(int i=1;i<=n;i++){
		cin>>x;
		s2.push_back({x,0});
	}
	for(int i=1;i<=n;i++){
		cin>>x;
		s1[i].t=x;
	}
	for(int i=1;i<=n;i++){
		cin>>x;
		s2[i].t=x;
	}
	for(int i=1;i<s1.size();i++){
		if(s1[i].t=='0' and s2[i].t=='0'){
			if(s1[i].word==s2[i].word){
				ans++;
			}
			continue;
		}
		if(s1[i].t=='1'){
			if(s1[i].word=='0')first.fzero++;
			else first.fone++;
		}
		if(s2[i].t=='1'){
			if(s2[i].word=='0')second.fzero++;
			else second.fone++;
		}
		if(s1[i].t=='0'){
			if(s1[i].word=='0')first.nfzero++;
			else first.nfone++;
		}
		if(s2[i].t=='0'){
			if(s2[i].word=='0')second.nfzero++;
			else second.nfone++;
		}
	}
	int zero1=0,zero2=0,one1=0,one2=0;
	if(first.fzero>=second.nfzero){
		ans+=second.nfzero;
		zero1=first.fzero-second.nfzero;
	}else ans+=first.fzero;
	if(first.fone>=second.nfone){
		ans+=second.nfone;
		one1=first.fone-second.nfone;
	}else ans+=first.fone;
	if(second.fzero>=first.nfzero){
		ans+=first.nfzero;
		zero2=second.fzero-first.nfzero;
	}else ans+=second.fzero;
	if(second.fone>=first.nfone){
		ans+=first.nfone;
		one2=second.fone-first.nfone;
	}else ans+=second.fone;
	cout<<ans+min(one1,one2)+min(zero1,zero2)<<endl;
	return;
}
signed main(){
	cin>>t;
	for(int i=0;i<t;i++){
		s1.push_back({0,0});
		s2.push_back({0,0});
		cin>>n;
		work();
		first1.fzero=0,first1.fone=0,first1.nfone=0,first1.nfzero=0;
		second2.fzero=0,second2.fone=0,second2.nfzero=0,second2.nfone=0;
		s1.clear();
		s2.clear();
	}
	return 0;
}

谢谢各位大佬

2024/12/2 21:10
加载中...