AcWing 913. 排队打水
前言
小根堆
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;//输入所有数字的个数
priority_queue<int,vector<int>,greater<int>> heap;//小根堆,三个参数
for(int i=0;i<n;i++){
int x;
cin>>x;
heap.push(x);//把数字存到小根堆里面
}
long long ans=0;//答案因为是求和,假设是 10^4 * 2e4 =2e8,再乘以 2e4 4e12 爆 int 了
int i=0;
while(heap.size()){//贪心,每一次取最小值
ans+=heap.top()*(n-i-1);//最小的等待时间需要被算上的次数
heap.pop();//可以举一些具体的例子,来帮助写公式
i++;//其实这个题数组+排序更方便,我只是想熟练一下小根堆
}
cout<<ans<<endl;
return 0;
}
思路
我只是想熟练一下小根堆的操作。这题很简单。
原文地址:https://blog.csdn.net/L3102250566/article/details/144438083
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!