P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G 题解

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
这是一道贪心算法的题目,每次选择两个最小的堆,合并后,继续直到只有一堆为止,可能用优先队列进行维护。

#include<bits/stdc++.h>
using namespace std;
int main()
{
        priority_queue<int,vector<int>,greater<int> > q;
        int n;
        cin>>n;
        for (int i=1;i<=n;i++)
       {
               int x;
               cin>>x;
               q.push(x);
       }
       int ans=0;
       while(q.size()>1)
      {
            int x,y;
           x=q.top();
           q.pop();
           y=q.top();
           q.pop();
           int z;
           z=x+y;
           ans+=z;
           q.push(z);
       }
       cout<<ans;
      return 0;
}

posted @   心悟&&星际  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示