贪心刷题3-合并果子

题目来源:[NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G - 洛谷

参考书目:《深入浅出程序设计竞赛(基础篇)》

解题思路:这道题的关键在于每次选择合并时都要选择最小的两堆果子来合并,从而保证每次合并的代价最小,累计的总代价也最小。可以使用两个数组,一个存储输入的果子数目(a1),另一个用于存储中间合并过程中生成的新堆(a2)。

                                            图1 节选自《 深入浅出程序设计竞赛(基础篇)》

解题步骤

  1. 输入果子的种类数n,并为a1数组赋予相应的果子数目。

  2. 将a1数组进行升序排序。

  3. 初始化两个指针,分别指向a1和a2的起始位置,用于在后续操作中选择最小的元素。

  4. 进行n-1次操作,每次从a1和a2指向的元素中选取两个最小的进行合并,更新指针位置,并将合并后的新重量加入到a2数组,同时更新总体力消耗sum。

  5. 在所有果子合并完成后,输出总体力消耗sum作为答案。

#include<iostream>
#include<algorithm>
#include<cstring>using namespace std;int n, n2, a1[10010], a2[10010], sum = 0;int main()
{cin >> n;memset(a1, 127, sizeof(a1));//将数组初始化为一个接近int最大值的数,效率较高memset(a2, 127, sizeof(a2));for (int i = 0; i < n; i++){cin >> a1[i];}sort(a1, a1 + n);int i = 0, j = 0, k, w;for (k = 1; k < n; k++){w = a1[i] < a2[j] ? a1[i++] : a2[j++];//取最小值w +=a1[i] < a2[j] ? a1[i++] : a2[j++]; //取第二次最小值a2[n2++] = w;//加入第二个队列sum += w;//计算价值}cout << sum;return 0;}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/723536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 元数据锁及问题排查(Metadata Locks MDL)

"元数据"是用来描述数据对象定义的&#xff0c;而元数据锁&#xff08;Metadata Lock MDL&#xff09;即是加在这些定义上。通常我们认为非锁定一致性读&#xff08;简单select&#xff09;是不加锁的&#xff0c;这个是基于表内数据层面&#xff0c;其依然会对表的元…

python中的类

_init_()函数 所有类都有一个名为__init__()的函数&#xff0c;它在每次使用类创建新对象时都会自动执行&#xff0c;可用于将用户指定的值在初始就赋给对象的属性&#xff0c;或者在创建对象时执行一些固定操作&#xff0c;如下&#xff1a; class Person:def __init__(self…

Python之Web开发初学者教程—ubuntu下vi的使用

Python之Web开发初学者教程—ubuntu下vi的使用 vi\vim 文本编辑器 i 切换到输入模式&#xff0c;以输入字符。 x 删除当前光标所在处的字符。 : 切换到底线命令模式&#xff0c;以在最底一行输入命令。 vi 保存并退出&#xff1a;esc键退出编辑-…

网络学习:Vlan原理

目录 一、交换机对数据帧的处理 1、Access&#xff1a; 2、Trunk&#xff1a; 3、Hybrid&#xff1a; 二、VLAN的划分方式 三、VLAN信息的传播技术&#xff08;MVRP协议&#xff09; 1、VLAN动态注册背景&#xff1a; 2、MVRP技术&#xff1a; 3、MVRP注意点&#xff…

前缀和与差分——练习(一维+二维)

一、前言 前缀和与差分算是很常用的算法&#xff0c;熟记是有必要的。 ——题目来源y总每日一题&#xff0c;感觉正适合模板分块讲解系列。 二、浅谈 我们可以用a数组作为前缀和数组&#xff0c;b数组作为差分数组&#xff0c;因为二者互为逆运算。 他们常常用做优化&#xff…

Python爬虫——Selenium

简介 Selenium是一个自动化测试框架&#xff0c;可以通过编程语言控制浏览器进行各种操作。在Python中&#xff0c;可以使用Selenium实现爬虫。 首先&#xff0c;我们需要需要安装Selenium库。可以使用pip命令安装&#xff1a; pip install selenium要使用的话我们还需…

7-Zip:一款免费开源但强大的压缩软件

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是7-zip?①为什么选择7-Zip?②7-Zip的主要特点二、下载安装三、如何使用7-Zip?四、总结很高兴你打开了这篇博客,如有疑问,欢迎评论…

密码学之椭圆曲线

引言 DH(Diffie-Hellman)密钥交换算法于1976年提出,是第一个公开密钥交换算法。其基础是数学中的群论,群论也是大多数公开密钥密码的基础。简单来说,群是一组元素的集合以及在这些元素上定义的特殊二元运算。 一个群需要满足如下性质: 封闭性:群中两个元素的运算结果仍…

用于生成环境噪声的Noisedash

本文中关于音频的专业描述&#xff0c;来自于互联网和 ChatGPT&#xff1b; 什么是白噪声 &#xff1f; 白噪声&#xff08;White Noise&#xff09;是具有平均功率的随机信号&#xff0c;其功率在整个频谱范围内均匀分布。它的能量在所有频率上都是相等的&#xff0c;没有频率…

【Linux C | 网络编程】广播概念、UDP实现广播的C语言例子

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

代码随想录算法训练营第33天—动态规划01 | ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

动态规划理论基础 https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 视频&#xff1a;https://www.bilibili.com/video/BV13Q4y197Wg 主要题型 动规基础题 斐波那契数列 背包问题打家劫舍股票问题子序列问题 解题…

伟大音乐家的伟大不朽作品,贝多芬一生的音乐作品全集

一、音乐描述 贝多芬一生创作题材广泛&#xff0c;重要作品包括9部交响曲、1部歌剧、32首钢琴奏鸣曲、5首钢琴协奏曲、多首管弦乐序曲及小提琴、大提琴奏鸣曲等。因为其对古典音乐的重大贡献&#xff0c;以及对奏鸣曲式和交响曲套曲结构的发展和创新&#xff0c;而被后世尊称为…

【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据】操作批量新增、分页查询(四)

orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本编码方式mybatis☑️☑️3.5.4lambda xml 优化sq…

【记录31】elementUI el-tree 虚线、右键、拖拽

父组件 <eltree :treeData"treeData"></eltree>import eltree from "../../components/tree.vue"; export default {name: ,components: { // org_tree ,eltree},watch: {},data() {return {orgFormchoose: {},orgForm: { type: 0, limits: 1…

Python乱码恢复

比如说网页是ISO-8859-1编码&#xff0c;然后requests得到的是乱码&#xff0c; 那么这样操作就可以还原数据&#xff1a;res.text.encode(‘ISO-8859-1’).decode(‘utf-8’) 乱码恢复网站&#xff0c;可以知道是什么编码http://www.mytju.com/classCode/tools/messyCodeReco…

CRC8/CRC16/CRC32全面对比详解

在现代数据通信和存储技术中&#xff0c;CRC&#xff08;Cyclic Redundancy Check&#xff0c;循环冗余校验&#xff09;算法作为一种关键的错误检测机制&#xff0c;在确保数据完整性方面扮演着不可或缺的角色。该算法基于一个特定的生成多项式对原始数据块进行模2除法运算&am…

Stable Diffusion——Animate Diff一键AI图像转视频

前言 AnimateDiff 是一个实用框架&#xff0c;可以对文本生成图像模型进行动画处理&#xff0c;无需进行特定模型调整&#xff0c;即可为大多数现有的个性化文本转图像模型提供动画化能力。而Animatediff 已更新至 2.0 版本和3.0两个版本&#xff0c;相较于 1.0 版本&#xff…

Golang关键字defer

# Golang 关键字 defer 的用法和原理## 什么是 defer在 Golang 中&#xff0c;有一个特殊的关键字 defer&#xff0c;它可以让一个函数或者语句在当前函数返回之前执行。defer 的常见用途有&#xff1a;- 关闭文件、数据库连接、网络连接等资源 - 解锁互斥锁 - 捕获和处理异常 …

C#高级:Winform桌面开发中DataGridView的详解

一、每条数据增加一个按钮&#xff0c;点击输出对应实体 请先确保正确添加实体的名称和文本&#xff1a; private void button6_Click(object sender, EventArgs e) {//SQL查询到数据&#xff0c;存于list中List<InforMessage> list bll.QueryInforMessage();//含有字段…

代码思想录-动态规划(509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯)

509. 斐波那契数 class Solution { public:int fib(int n){if (n0) return 0;if (n1) return 1;vector<int> dp(n1, 0);dp[0] 0;dp[1] 1;for (int i2; i<n1;i){dp[i] dp[i-1] dp[i-2];}return dp[n];} }; 70. 爬楼梯 class Solution { public:int climbStairs(…