码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 合并果子(C++)[堆]


    题目:

    Description

    在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

    多多决定把所有的果子合成一堆。

    每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。

    可以看出 所有的果子经过n-1次合并之后,就只剩下一堆了。

    多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。

    因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。

    假定每个果子重量都为1并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。

    例如有3种果子,数目依次为1,2,9。可以先将 1、2堆合并,新堆数目为3,耗费体力为3。

    接着,将新堆与原先的第三堆合并又得到新的堆,数目为12,耗费体力为 12。

    所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

    Format

    Input

    包括两行,第一行是一个整数n(1 <= n <= 10000),表示果子的种类数。

    第二行包含n个整数,用空格分隔第i个整数ai(1 <= ai <= 20000)是第i种果子的数目。

    Output

    包括一行,这一行只包含一个整数,也就是最小的体力耗费值。

    输入数据保证这个值小于2^31。

    Samples

    输入数据 1

    1. 3
    2. 1 2 9

    输出数据 1

    15
    

    题解&Code

    1. #include
    2. using namespace std;
    3. int ans;
    4. int main()
    5. {
    6. int n,x;
    7. cin>>n;
    8. for(int i=1;i<=n;i++)
    9. {
    10. cin>>x;
    11. q.push(x);//将元素打入堆中
    12. }
    13. while(q.size()>=2)//堆的大小必须大于等于2
    14. {
    15. /*我们每次操作取出两个对顶元素(因为是小根堆,所以是堆中最小的两个元素)*/
    16. /*因为是最小的两个元素,所以合并价值是当前最小的*/
    17. /*且能保持全局价值最优*/
    18. int t1=q.top();
    19. q.pop();
    20. int t2=q.top();
    21. q.pop();
    22. /*将合并的果子打入堆中*/
    23. q.push(t1+t2);
    24. /*ans加上合并价值*/
    25. ans+=t1+t2;
    26. }
    27. cout<
    28. return 0;
    29. }

     

  • 相关阅读:
    20221108:onnx2caffe错误处理
    (02)Cartographer源码无死角解析-(20) MapBuilder→MapBuilder()构造函数
    【算法刷题】—7.26几何算法的解题,折线图线段数
    阿里云ECS服务器无法发送邮件问题解决方案
    艾美捷ICT FLICA天冬氨酸蛋白酶(Caspase)活性检测试剂盒说明书
    SpringCloud微服务实战——搭建企业级开发框架(五十二):第三方登录-微信小程序授权登录流程设计和实现
    2023开放原子全球开源峰会——Intel专题探访
    [Python学习篇] Python字典
    vscode使用远程服务器jupyter
    Ajax之基本语法
  • 原文地址:https://blog.csdn.net/ytk888/article/details/126289271
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号