比赛 |
2024暑假C班集训C |
评测结果 |
WWWWWWWWWW |
题目名称 |
W&B |
最终得分 |
0 |
用户昵称 |
wzh0425 |
运行时间 |
2.242 s |
代码语言 |
C++ |
内存使用 |
4.11 MiB |
提交时间 |
2024-07-12 09:18:09 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int T,n,zm[100005],siz[100005],zs[5],ans,zm2[100005],siz2[100005],gs,t;
int gcd(int a,int b){
if (a%b==0) return b;
return gcd(b,a%b);
}
int main(){
freopen("silly.in","r",stdin);
freopen("silly.out","w",stdout);
scanf("%d",&T);
while (T--){
gs=0,t=0,ans=0;
memset(zs,0,sizeof(zs));
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d",&siz[i]);
char s;
scanf("%s",&s);
if (s=='W'){
zm[i]=1,zs[1]+=siz[i];
if (gs==1){
siz2[t]+=siz[i];
}else{
gs=1;
zm2[++t]=1;
siz2[t]=siz[i];
}
}
else{
zm[i]=2,zs[2]+=siz[i];
if (gs==2){
siz2[t]+=siz[i];
}else{
gs=2;
zm2[++t]=2;
siz2[t]=siz[i];
}
}
}
if (zs[1]==0){
printf("%d\n",zs[2]);
continue;
}
if (zs[2]==0){
printf("%d\n",zs[1]);
continue;
}
int t1=zs[1]/gcd(zs[1],zs[2]);
int t2=zs[2]/gcd(zs[1],zs[2]);
int ry=0,bl=0,flag=0;
for (int i=1;i<=t;i++){
if (zm2[i]==1){
ry=bl*t1;
if ((siz2[i]-ry)%t1!=0){
printf("1\n");
flag=1;
break;
}else{
bl=(siz2[i]-ry)/t1;
if (bl!=0) ans++;
}
}else{
ry=bl*t2;
if ((siz2[i]-ry)%t2!=0){
printf("1\n");
flag=1;
break;
}else{
bl=(siz2[i]-ry)/t2;
if (bl!=0) ans++;
}
}
}
if (flag==0){
printf("%d\n",ans);
}
}
return 0;
}