1 条题解

  • 1
    @ 2023-11-11 13:58:25

    用优先队列代替堆水过:

    #include<bits/stdc++.h>
    using namespace std;
    long long tmp,n,ans=0;
    int main(){
        priority_queue<long long,vector<long long>,greater<long long> > q;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>tmp;
            q.push(tmp);
        }
        for(int i=1;i<=n-1;i++){
            int a,b;
            a=q.top();
            q.pop();
            b=q.top();
            q.pop();
            ans+=a+b;
            q.push(a+b);
        }
        cout<<ans;
    }
    
    • 1

    信息

    ID
    335
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    6
    已通过
    2
    上传者