售票题解
2025-07-23 19:09:15
发布于:浙江
0阅读
0回复
0点赞
就是枚举每一种价格啦,按照计算机1秒跑1e8(10^8)我以为会超时(1e4*1e5=1e9),所以加了个优化,结果不加优化也可以过哈哈
#include<bits/stdc++.h>
using namespace std;
int a[10010];
int tot[100010];
int main(){
	//优化:都没人出这个价,我就不定这个价!(把a元的票出价为a的最好,用a-x就亏了x元),如果比最多愿意出价的最大值还大,那就没人来了 
	int n,mi=INT_MAX,mx=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		tot[a[i]]++;//记录最多愿意出价为a的人的个数 
		mi=min(mi,a[i]);//取最小出价 
		mx=max(mx,a[i]);//取最大出价 
	}
	int ans=0;//记录答案,因为答案取最大值,且是非负数,故ans=0 
	for(int i=mi;i<=mx;i++)
	{
		if(tot[i]==0) continue;
		int cnt=0;//计算当前出价有多少人买
		for(int j=1;j<=n;j++)
		{
			if(a[j]>=i) cnt++;//如果最多愿意出价的钱>=枚举的价格,愿意买的人+1 
		} 
		ans=max(ans,cnt*i); 
	}
	cout<<ans;
	return 0;
}
这里空空如也





有帮助,赞一个