比赛 |
2024暑假C班集训C |
评测结果 |
WWWWWWWWWW |
题目名称 |
W&B |
最终得分 |
0 |
用户昵称 |
wdsjl |
运行时间 |
4.059 s |
代码语言 |
C++ |
内存使用 |
4.35 MiB |
提交时间 |
2024-07-12 10:37:48 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
long long sb,sw,c[N],ans,n,x,y,t,l_v,n_v,cnt,l_i,tot,bei,b_b,b_w,n_b,n_w;
char ch1,ch2,chrr[N];
int gcd(long long a,long long b){
return b?gcd(b,a%b):a;
}
int main(){
freopen("silly.in","r",stdin);
freopen("silly.out","w",stdout);
scanf("%lld",&t);
while(t--){
ans=0;
memset(c,0,sizeof(c));
sb=0;
sw=0;
l_i=0;
scanf("%lld",&n);
for(int i=1;i<=n;i++){
cin>>x>>ch1;
if(ch1=='B')sb+=x;
else sw+=x;
if(ch1==ch2){
}else{
l_i++;
}
c[l_i]+=x;
chrr[l_i]=ch1;
ch2=ch1;
}
if(sb==0||sw==0){
printf("%lld",sb+sw);
return 0;
}
tot=sb+sw;
bei=gcd(sb,sw);
b_b=sb/bei;
b_w=sw/bei;
for(int i=1;i<=l_i;i++){
if(chrr[i]=='B')n_b+=c[i];
else n_w+=c[i];
n_v=(chrr[i]=='B')?1:2;
if(n_b&&n_w){
if(n_b/gcd(n_b,n_w)==b_b&&n_w/gcd(n_b,n_w)==b_w){
ans++;
n_b=0;
n_w=0;
}else if(n_v==1){
if(n_b>((n_w/b_w)*b_b)&&(n_w%b_w)==0){
n_b-=((n_w/b_w)*b_b);
n_w=0;
ans++;
}
}else if(n_v==2){
if(n_w>((n_b/b_b)*b_w)&&(n_b%b_b)==0){
n_w-=((n_b/b_b)*b_w);
n_b=0;
ans++;
}
}
}
}
printf("%d\n",ans);
}
return 0;
}