[c++刷题]贪心算法.N01

题目如上:

首先通过经验分析,要用最少的减半次数,使得数组总和减少至一半以上,那么第一反应就是每次都挑数组中最大的数据去减半,这样可以是每次数组总和值减少程度最大化。

代码思路:利用大根堆去找数据中的最大值,每次减半再次压入大根堆即可。

主要是如何证明贪心策略的正确性 :

我们使用《交换论证法》来证明

圆圈代表每次减半的数,圆圈的个数就代表总操作次数。

相关推荐
kingking448 分钟前
剖析:基于 RDMA 的多机数据分发和接收场景
服务器·网络·c++
Prejudices8 分钟前
QCommandLineParser简介
c++·qt
水w21 分钟前
什么是AQS
java·开发语言·jvm·什么是aqs
gma99929 分钟前
【Qt】前后端交互---DataCenter类
开发语言·qt
多喝热水-多读书31 分钟前
Qt C++设计模式->外观模式
c++·qt·设计模式·外观模式
hai4058735 分钟前
Go语言接口与多态
开发语言·后端·golang
friklogff36 分钟前
【C#生态园】Excel处理新选择:全方位解析六大C#库
开发语言·c#·excel
hrlees43 分钟前
从零开始Ubuntu24.04上Docker构建自动化部署(五)Docker安装jenkins
java·开发语言
神仙别闹1 小时前
基于Java开发的(控制台)模拟的多用户多级目录的文件系统
java·开发语言
国中之林1 小时前
【qt】QQ仿真项目1
开发语言·c++·qt·学习·设计模式·ui设计