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

题目如上:

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

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

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

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

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

相关推荐
2402_882893862 小时前
封装红黑树实现map和set —— 从源码到模拟实现
c++·set·map
snow@li3 小时前
Java:微服务项目与单体项目区别、市场占有率全景深度分析
java·开发语言·微服务
吴声子夜歌3 小时前
Java——性能和效率
java·开发语言
小鹿的周先生4 小时前
第四章-SpringAI-函数调用&ToolCalling
开发语言·人工智能·python
神仙别闹4 小时前
基于C++ MFC 实现的智慧公交系统
开发语言·c++·mfc
秋田君4 小时前
Qt_webSocket协议编程实战
开发语言·qt·websocket
ttwuai4 小时前
Go 后台附件迁到对象存储后,path、cdnUrl 和 tenant_id 怎么一起验?
开发语言·后端·golang
一只小阿乐4 小时前
java 语法学习 1
java·开发语言·学习
dear_bi_MyOnly4 小时前
函数模块化:企业级项目高效之道
c++·后端·学习
码匠许师傅4 小时前
【设计模式精讲】13.装饰器模式(Decorator)
c++·设计模式·uml·装饰器模式