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

题目如上:

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

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

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

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

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

相关推荐
smchaopiao20 分钟前
Python中字典与列表合并的问题与解决方法
开发语言·python
敲代码的瓦龙38 分钟前
Java?面向对象三大特性!!!
java·开发语言
2501_9216494939 分钟前
期货 Tick 级数据与基金净值历史数据 API 接口详解
开发语言·后端·python·websocket·金融·区块链
野犬寒鸦43 分钟前
Redis复习记录day1
服务器·开发语言·数据库·redis·缓存
小菜鸡桃蛋狗1 小时前
C++——类和对象(下)
开发语言·c++
骑龙赶鸭1 小时前
java开发项目中遇到的难点,面试!
java·开发语言·面试
张人玉1 小时前
C#通讯(上位机)常用知识点
开发语言·c#·通讯·上位机开发
NGC_66111 小时前
Java线程池七大核心参数介绍
java·开发语言
crescent_悦1 小时前
C++:Highest Price in Supply Chain
开发语言·c++