比赛 |
2024暑假C班集训C |
评测结果 |
EEEEEEEEEE |
题目名称 |
W&B |
最终得分 |
0 |
用户昵称 |
李奇文 |
运行时间 |
3.014 s |
代码语言 |
C++ |
内存使用 |
79.64 MiB |
提交时间 |
2024-07-12 11:32:52 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int t;
struct node{
int k;
char c;
};
int f[10000001],g[10000001];
int dfs(int x,int ratio,int end,int area){
if(x==end){
return area;
}
int maxn=0;
for(int i=x+1;i<=end;i++){
if((g[i]-g[x+1])/(f[i]-f[x+1]))
maxn=max(maxn,dfs(i,ratio,end,area++));
}
return maxn;
}
int main(){
freopen("silly.in","r",stdin);
freopen("silly.out","w",stdout);
cin>>t;
while(t--){
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
int n,j;
cin>>n;
node a[n+5];
bool allone=true;
for(int i=1;i<=n;i++){
bool isb=true;
cin>>a[i].k>>a[i].c;
if(a[i].c=='W'){
isb=false;
allone=false;
}
for(j=1;j<=a[i].k;j++){
if(isb){
f[j]++;
}else{
g[j]++;
}
f[j]+=f[j-1];
g[j]+=g[j-1];
}
}
if(allone){
cout<<j<<endl;
continue;
}
int ans=1;
for(int i=1;i<=j;i++){
ans=max(ans,dfs(i,(g[i]-g[i-1])/(f[i]-f[i-1]),j,ans));
}
cout<<ans;
}
return 0;
}