比赛 2024暑假C班集训C 评测结果 TWWWWWWWTT
题目名称 W&B 最终得分 0
用户昵称 陆晨洗 运行时间 8.530 s
代码语言 C++ 内存使用 3.48 MiB
提交时间 2024-07-12 09:41:03
显示代码纯文本
#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;
    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;
            }
            else
            {
                b1++;
                b[b1]=k;
                b[0]=b[0]+k;
            }
        }
        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;
}