55到底怎么回事啊
查看原帖
55到底怎么回事啊
616733
Lysea楼主2024/10/19 17:28
#include<bits/stdc++.h>
#define int long long
#define N 1000005
#define INF 1e18
using namespace std;
int T,n,a[N],fnt,fl,tot[4];
char s1[N],s2[N];
int num(char ch){
	if(ch=='W') return 1;
	if(ch=='P') return 2;
	return 3;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>T;
	while(T--){
		cin>>n>>s1+1>>s2+1,n<<=1,fnt=0;
		for(int i=1;i<=n/2;i++){
			a[++fnt]=num(s1[i]);
			a[++fnt]=num(s2[i]);
		}fl=tot[1]=tot[2]=tot[3]=0; int ans=INF;
		for(int i=1;i<=n;i++){
			tot[a[i]]++;
			if(i%3==0){
				if(i/3%2==0&&tot[1]==tot[2]&&tot[2]==tot[3]) fl=1;
				else{
					int k=abs(tot[1]-i/3)+abs(tot[2]-i/3)+abs(tot[3]-i/3);
					k/=2;
					if(fl&&!k) k=2; 
					ans=min(ans,k);
				}
			}
		}cout<<ans<<endl;
	} 
	return 0;
}
/*
1
2
PP
PP
*/

赛时调崩了。

2024/10/19 17:28
加载中...