自学内容网 自学内容网

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)!