比赛 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;
}