售票题解
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;
}
这里空空如也
有帮助,赞一个