记录编号 |
590886 |
评测结果 |
TWWWWWWWTT |
题目名称 |
W&B |
最终得分 |
0 |
用户昵称 |
陆晨洗 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
8.818 s |
提交时间 |
2024-07-12 14:46:36 |
内存使用 |
3.27 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int b1=0,w1=0;
int b[100010]={0};
int w[100010]={0};
int main()
{
freopen("silly.in","r",stdin);
freopen("silly.out","w",stdout);
int t,n,k,a,ans,i,j;
char c,c0;
cin>>t;
for(i=1;i<=t;i++)
{
cin>>n;
ans=0;a=0;w[0]=0;b[0]=0;
for(j=1;j<=n;j++)
{
cin>>k>>c;
if(c=='W')
{
w1++;
w[w1]=k;
w[0]=w[0]+k;
c0='W';
}
else
{
b1++;
b[b1]=k;
b[0]=b[0]+k;
c0='B';
}
if(c0==c)
{
if(c=='W')
{
w1--;
w[w1]=w[w1]+w[w1+1];
}
else
{
b1--;
b[b1]=b[b1]+b[b1+1];
}
}
}
for(j=min(w[0],b[0]);j>1;j--)
{
if(b[0]%j==0&&w[0]%j==0)
{
b[0]=b[0]/j;
w[0]=w[0]/j;
j=min(w[0],b[0]);
}
}
if(w[0]==0||b[0]==0)
{
cout<<w[0]+b[0]<<endl;
}
else
{
for(;;)
{
if(b1==0&&w1==0)
{
cout<<ans<<endl;
break;
}
if(a==0)
{
a=a+b[b1]*w[0];
b1--;
}
if(a>0&&w1!=0)
{
a=a-w[w1]*b[0];
w1--;
if(a<=0)
{
ans++;
}
}
if(a<0&&b1!=0)
{
a=a+b[b1]*w[0];
b1--;
if(a>=0)
{
ans++;
}
}
}
}
}
return 0;
}