OJ万题详解––[NOIP2004 提高组] 合并果子(C++详解)
目录
题目
分析
参考代码
题目
题目描述
一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。
每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。
例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。
输入格式
输入包括两行。
第一行是一个整数n(1<=n<=10000),表示果子的种类数。
第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。
输出格式
输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于2的31次方。
样例
样例输入
3 1 2 9样例输出
15数据范围与提示
对于30%的数据,保证有n<=1000:
对于50%的数据,保证有n<=5000;
对于全部的数据,保证有n<=10000。
分析
这道题我主要是采用优先队列的方式来做,主要是因为优先队列便于排序.
接下来咱们边上代码边讲
priority_queue<int,vector<int>,greater<int> >q;
定义优先队列,这里我定义的是小根堆(从小到大),因为优先队列默认的是大根堆(从大到小),为了避免与输入流符号">>"误认,要特地把他们分开.
for(int i=1;i<=n;i++){cin>>tmp;q.push(tmp);
}
输入,入列,优先队列的好处就是边入列边排序,比sort快.
while(q.size()>1){k=q.top();q.pop();k1=q.top();q.pop();k1+=k,sum+=k1;q.push(k1);k1=0;
}
合并果子的过程,大家应该都能看懂吧 .
最后把sum输出就行了.接下来就是参考代码
参考代码
#include<bits/stdc++.h>
using namespace std;
const int MAX=10005;
typedef unsigned long long ull;
int tmp,n,sum,k,k1;
priority_queue<int,vector<int>,greater<int> >q;
int main(){ios::sync_with_stdio(false);cin>>n;for(int i=1;i<=n;i++){cin>>tmp;q.push(tmp);}while(q.size()>1){k=q.top();q.pop();k1=q.top();q.pop();k1+=k,sum+=k1;q.push(k1);k1=0;}cout<<sum<<endl;return 0;
}
如果你不想让你的代码超时,手动开O2哦
#pragma GCC optimize(2)
相关文章:
OJ万题详解––[NOIP2004 提高组] 合并果子(C++详解)
目录 题目 分析 参考代码 题目 题目描述 一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的…...
MySQL-字符集和比较规则
在计算机中只能存储二进制数据,那该怎么存储字符串呢?当然是建立字符与二进制数据的映射关系 了,建立这个关系最起码要搞清楚两件事: 界定清楚字符范围:需要把哪些字符映射成二进制数据?编码与解码&#x…...
微搭低代码从入门到精通12-网格布局
开发小程序首要的就是考虑布局的问题,我们在以前的版本只能选择普通容器结合图片和文本组件来构建页面。 使用通用组件布局也可以,但有个问题是你要先学习CSS,要懂布局的概念,比如需要知道啥是flex布局,然后还得熟悉每…...
【c语言】二叉树
主页:114514的代码大冒险 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 引入 我们之前已经学过线性数据结构,今天我们将介绍非线性数据结构----树 树是一种非线性的…...
六、Java框架之SpringBoot
黑马课程 文章目录1. SpringBoot入门1.1 SpringBoot入门案例步骤1:创建SpringBoot项目高版本springboot常见错误步骤2:创建BookController步骤3:启动服务器并运行程序pom.xml示例1.2 官网创建SpringBoot1.3 SpringBoot工程快速启动问题导入打…...
「Python|环境安装|Windows」如何在Windows上安装Python环境?
本文主要介绍如何在Windows上安装Python,帮助初学者或者非程序员伙伴快速搭建可以运行python代码的环境。 文章目录安装python做一点小配置验证python如何安装指定版本的python编程语言的环境搭建一直是学习编程的第一道门槛。 对于如何在Linux系统上安装指定版本的…...
人工智能轨道交通行业周刊-第33期(2023.2.6-2.12)
本期关键词:高铁激光清洗、高铁确认列车、无线通信系统、推理服务优化、量子信息技术 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟V…...
五分钟看懂Java字节码:极简手册
字节码新手很容易被厚厚的 JVM 书籍劝退,即使我看过相关书籍,工作真正用到时也全忘了,还得现学。 等我有了一定的字节码阅读经验,才发现字节码其实非常简单,只需要三步就能快速学会: 先了解 JVM 的基本结…...
C++ 类与对象(下)
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:C 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:C类与对象的收尾工作&#…...
Java基础——I/O
一、异常 异常是程序中可能出现的问题,它的父类是Exception。异常分为两类,编译时异常、运行时异常。 编译时异常:没有继承RuntimeException的异常,直接继承于Exception。编译阶段就会错误提示。运行时异常:RuntimeE…...
关于@hide的理解
在上一篇文章《学习HandlerThread》我们提到虽然HandlerThread类里有getThreadHandler()方法得到Handler,但是我们不可能调用到它。因为这个方法用hide注释了 /*** return a shared {link Handler} associated with this thread* hide*/NonNullpublic Handler getT…...
使用python加密主机文件几种方法实现
本文主要介绍了使用python加密主机文件几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧数据加密是一种保护数据安全的技术,通过对数据进行编…...
西湖论剑 2023 比赛复现
WEB real_ez_node 在 route/index.js 中: router.post(/copy,(req,res)>{res.setHeader(Content-type,text/html;charsetutf-8)var ip req.connection.remoteAddress;console.log(ip);var obj {msg: ,}if (!ip.includes(127.0.0.1)) {obj.msg"only for…...
微信小程序更换管理员/重置管理员
方式1: 首先进入微信公众平台官网进入并登录后在管理中找到成员管理选项找到管理员点击后方的修改选项需要使用原管理员的微信进行扫码验证扫码后在手机上确认绑定新管理员,注意:如果是个人账号不可以更改成其他人。 方式2:原管…...
企业进存销管理系统
技术:Java、JSP等摘要:随着当今世界计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业进销存管理势在必行。本系统结合公司实际的进销存制度,通过对本公司的供应商、客户、商品、进货、销售、进销…...
C++入门
变量变量创建的语法: 数据类型 变量名 变量初始值;int a 10;cout << a << endl;常量作用:用于记录程序中不可更改的教国C定义常量两种方式1).#define 宏常量:#define 常量名 常量值通常在文件上方定义。表示一个常量2).const 修饰的变量const 数据类型 常量名 常…...
视频知识点(20)- H264码流如何在SPS中获取宽高信息?
《音视频开发》系列-总览 前沿 了解H264视频编码格式的小伙伴都知道,H264编码中存在两个非常重要的参数集。没错,它们就是序列参数集(SPS)和图像参数集(PPS),而且通常情况下,PPS会依赖SPS中的部分参数信息,同时,视频码流的宽高信息也存储在SPS中。那么如何从中获取视…...
鲜花数据集实验结果总结
从read_split_data中得到:训练数据集,验证数据集,训练标签,验证标签。的所有的具体详细路径 数据集位置:https://download.csdn.net/download/guoguozgw/87437634 import os #一种轻量级的数据交换格式, …...
ElasticJob-Lite架构篇 - 认知分布式任务调度ElasticJob-Lite
前言 本文基于 ElasticJob-Lite 3.x 版本展开分析。 如果 Quartz 集群中有多个服务端节点,任务决定在哪个服务端节点上执行的呢? Quartz 采用随机负载,通过 DB 抢占下一个即将触发的 Trigger 绑定的任务的执行权限。 在 Quartz 的基础上&…...
【直击招聘C++】2.6 对象之间的复制
2.6 对象之间的复制一、要点归纳1. 对象之间的复制操作1.1 运算符1.2 拷贝构造函数2. 对象之间的浅复制和深复制2.1 对象的浅复制2.2 对象的深复制二、面试真题解析面试题1面试题2一、要点归纳 1. 对象之间的复制操作 同一个类的对象之间可以进行复制操作,即将一个…...
BG3模组管理器版本兼容性终极指南:告别游戏崩溃和模组失效
BG3模组管理器版本兼容性终极指南:告别游戏崩溃和模组失效 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager BG3模组管理器是《博德之门3》…...
Meta与斯坦福:字节级AI实现逐字节生成瓶颈突破与速度提升能力
这项由Meta人工智能基础研究团队(FAIR at Meta)与斯坦福大学、华盛顿大学联合开展的研究,于2026年5月发表,论文预印本编号为arXiv:2605.08044v1。感兴趣的读者可以通过该编号在arXiv平台上查阅完整论文。现代语言模型的工作方式&a…...
dotfiles工程化:用Git与符号链接打造可移植的开发环境
1. 项目概述:dotfiles 是什么,以及为什么你需要它如果你在终端里敲命令的时间超过了你用鼠标点来点去的时间,那你大概率已经听说过dotfiles了。简单来说,dotfiles就是你系统里那些以点(.)开头的配置文件&am…...
FPGA电源系统设计与线性/开关稳压器应用指南
1. FPGA电源系统设计基础在数字系统设计中,FPGA因其可编程性和高性能已成为现代电子系统的核心器件。随着工艺技术进步,当代FPGA集成了数百万逻辑门、高速收发器、锁相环和专用处理单元,这些复杂模块对供电系统提出了严苛要求。一个典型的Xil…...
3分钟搞定:Axure RP中文语言包完整安装指南
3分钟搞定:Axure RP中文语言包完整安装指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面…...
Xilinx 7系列FPGA目标设计平台:从芯片到生态的系统开发革命
1. 项目概述:Xilinx 7系列FPGA设计平台的划时代意义作为一名在数字系统设计领域摸爬滚打了十几年的工程师,我至今还记得2012年初听到Xilinx发布其28nm 7系列FPGA首批“目标设计平台”时的兴奋感。那感觉就像是,一直需要自己从零开始搭积木、焊…...
从零移植Debian到红米2:解锁MSM8916上的主线Linux手机体验
1. 为什么选择红米2作为Linux移植平台 红米2作为2015年发布的入门级智能手机,搭载高通骁龙410(MSM8916)平台,1GB内存8GB存储的配置在今天看来已经相当落伍。但正是这种"过时硬件"反而成为了极客们眼中的宝藏开发板。我选…...
终极指南:如何在Windows上使用BiliBili-UWP第三方客户端告别卡顿,享受流畅观影体验
终极指南:如何在Windows上使用BiliBili-UWP第三方客户端告别卡顿,享受流畅观影体验 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在…...
ORAN专题系列-8:5G O-RAN Option7分体式小基站硬件白盒化的关键组件与部署场景剖析
1. 5G O-RAN Option7分体式架构的核心价值 第一次接触O-RAN Option7架构时,最让我惊讶的是它像乐高积木一样的模块化设计。这种分体式架构把传统基站拆解成三个独立部件:负责智能调度的O-DU(分布式单元)、承担信号转换的O-RU&…...
5个颠覆性技巧:用GanttProject开源甘特图工具让你的项目管理效率提升200%
5个颠覆性技巧:用GanttProject开源甘特图工具让你的项目管理效率提升200% 【免费下载链接】ganttproject Official GanttProject repository. 项目地址: https://gitcode.com/gh_mirrors/ga/ganttproject 你是否曾为项目延期而焦虑?是否在任务分配…...
