60pts求调
查看原帖
60pts求调
744409
rainbowe楼主2024/12/6 20:05

4,13,15~20 WA了

#include<bits/stdc++.h>
#define min(A,B) A<B?A:B
#define N 100005
using namespace std;
struct set{
	int s[2],r;
}seta[N],setb[N];
int t,n,cnta,cntb,p0,p1,ia,ib,ans;
bool a[N],b[N],ta[N],tb[N];
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>n;getchar();
		memset(seta,0,sizeof(seta));
		memset(setb,0,sizeof(setb));
		cnta=cntb=ans=ia=ib=0;
		for(int i=1;i<=n;i++) a[i]=getchar()=='1';getchar();
		for(int i=1;i<=n;i++) b[i]=getchar()=='1';getchar();
		for(int i=1;i<=n;i++)
		{
			ta[i]=getchar()=='1';
			cnta+=!(ta[i]&ta[i-1]);
			seta[cnta].r=i,seta[cnta].s[a[i]]++;
		}getchar();
		for(int i=1;i<=n;i++)
		{
			tb[i]=getchar()=='1';
			cntb+=!(tb[i]&tb[i-1]);
			setb[cntb].r=i,setb[cntb].s[b[i]]++;
		}getchar();
		for(int i=1;i<=n;i++)
		{
			ia+=i>seta[ia].r,ib+=i>setb[ib].r;
			p0=min(seta[ia].s[0],setb[ib].s[0]),p1=min(seta[ia].s[1],setb[ib].s[1]);
			seta[ia].s[0]-=p0,setb[ib].s[0]-=p0,seta[ia].s[1]-=p1,setb[ib].s[1]-=p1;
			ans+=p0+p1;
		}
		cout<<ans<<endl;
	}
	return 0;
}
2024/12/6 20:05
加载中...