95pts老实了,求大佬看看错在哪里
查看原帖
95pts老实了,求大佬看看错在哪里
1229005
HuangHuang02983楼主2024/12/6 23:18
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll t,n,aa[2][100005],bb[2][100005],ans,ga=1,gb=1,f[100005],aaa[100005],bbb[100005];
string a,b,c,d;
bool cc[100055],dd[100005];
int main(){
//	freopen("edit.in","r",stdin);
//	freopen("edit.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>t;
	while(t--){
		ans=0;
		ga=1;
		gb=1;
		cin>>n;
		cin>>a;
		cin>>b;
		cin>>c;
		cin>>d;
		for(int i=1;i<=n;i++){
			if(c[i-1]=='1'){
				aa[(int)a[i-1]-48][ga]++;
				aaa[i]=ga;
			}
			else{
				if(i!=1)
				ga++;
				aaa[i]=ga;
				aa[(int)a[i-1]-48][ga]++;
				if(i!=n)
				ga++;
			}
		}
		for(int i=1;i<=n;i++){
			if(d[i-1]=='1'){
				bb[(int)b[i-1]-48][gb]++;
				bbb[i]=gb;
			}
			else{
				if(i!=1)
				gb++;
				bbb[i]=gb;
				bb[(int)b[i-1]-48][gb]++;
				if(i!=n)
				gb++;
			}
		}
		aaa[n+1]=1e9;
		for(int i=1;i<=n;i++){
			if(aaa[i+1]!=aaa[i]||bbb[i+1]!=bbb[i]){
				if(bb[0][bbb[i]]>=aa[0][aaa[i]]){
					ans+=aa[0][aaa[i]];
					bb[0][bbb[i]]-=aa[0][aaa[i]];
					aa[0][aaa[i]]=0;
					
				}
				else{
					ans+=bb[0][bbb[i]];
					aa[0][aaa[i]]-=bb[0][bbb[i]];
					bb[0][bbb[i]]=0;
				}
				if(bb[1][bbb[i]]>=aa[1][aaa[i]]){
					ans+=aa[1][aaa[i]];
					bb[1][bbb[i]]-=aa[1][aaa[i]];
					aa[1][aaa[i]]=0;
				}
				else{
					ans+=bb[1][bbb[i]];
					aa[1][aaa[i]]-=bb[1][bbb[i]];
					bb[1][bbb[i]]=0;
				}
				if(aaa[i+1]!=aaa[i]){
					if(bb[1][bbb[i]]>bb[0][bbb[i]]){
						bb[1][bbb[i]]-=max(aa[0][aaa[i]],aa[1][aaa[i]]);
					}
					else{
						bb[0][bbb[i]]-=max(aa[0][aaa[i]],aa[1][aaa[i]]);
					}
				}
				else{
					if(aa[1][aaa[i]]>aa[0][aaa[i]]){
						aa[1][aaa[i]]-=max(bb[0][bbb[i]],bb[1][bbb[i]]);
					}
					else{
						aa[0][aaa[i]]-=max(bb[0][bbb[i]],bb[1][bbb[i]]);
					}
				}
			}
		}
		cout<<ans<<endl;
		for(int i=1;i<=ga;i++){
			aa[0][i]=0;
			aa[1][i]=0;
		}
		for(int i=1;i<=gb;i++){
			bb[0][i]=0;
			bb[1][i]=0;
		}
	}
	
	return 0;
}


2024/12/6 23:18
加载中...