玄3关,怎么超时了
  • 板块灌水区
  • 楼主taixunle
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/4/14 00:12
  • 上次更新2024/4/14 10:14:27
查看原帖
玄3关,怎么超时了
1281471
taixunle楼主2024/4/14 00:12
#include<bits/stdc++.h>
#define int long long
using namespace std;
int g;
int n,s,sum,ans;
string st;
bool cmp(int a,int b){
	return a>b;
}
int a[100005]={};
int b[100005]={};
int c[100005]={};
int d[100005]={};
int e[100005]={};
signed main(){
	cin>>g;
	while(g--){
		cin>>n;
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(c,0,sizeof(c));
		memset(d,0,sizeof(d));
		memset(e,0,sizeof(e));
		string str[100005]={};
		for(int i=1;i<=n;i++){
			cin>>str[i];
			string st=str[i];
			for(int j=0;j<st.size();j++){
				if(st[j]=='a')a[i]++;
				else{
					if(st[j]=='b')b[i]++;
					else{
						if(st[j]=='c')c[i]++;
						else{
							if(st[j]=='d')d[i]++;
							else e[i]++;
						}
					}
				}
				
			}
		}
		int ma=0;
		ans=0;
		sort(a+1,a+1+n,cmp);
		s=0,sum=0;
		for(int i=1;i<=n;i++){
			s+=str[i].size();
			sum+=a[i];
			if(sum>s/2){
				ans++;
			}
			else{
				break;
			}
		}
		ma=max(ma,ans);
		ans=0;
		sort(b+1,b+1+n,cmp);
		s=0,sum=0;
		for(int i=1;i<=n;i++){
			s+=str[i].size();
			sum+=b[i];
			if(sum>s/2){
				ans++;
			}
			else{
				break;
			}
		}
		ma=max(ma,ans);
		ans=0;
		sort(c+1,c+1+n,cmp);
		s=0,sum=0;
		for(int i=1;i<=n;i++){
			s+=str[i].size();
			sum+=c[i];
			if(sum>s/2){
				ans++;
			}
			else{
				break;
			}
		}
		ma=max(ma,ans);
		ans=0;
		sort(d+1,d+1+n,cmp);
		s=0,sum=0;
		for(int i=1;i<=n;i++){
			s+=str[i].size();
			sum+=d[i];
			if(sum>s/2){
				ans++;
			}
			else{
				break;
			}
		}
		ma=max(ma,ans);
		ans=0;
		sort(e+1,e+1+n,cmp);
		s=0,sum=0;
		for(int i=1;i<=n;i++){
			s+=str[i].size();
			sum+=e[i];
			if(sum>s/2){
				ans++;
			}
			else{
				break;
			}
		}
		ma=max(ma,ans);	
		cout<<ma<<endl;
	}
	return 0;
}


2024/4/14 00:12
加载中...