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

题目如上:

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

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

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

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

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

相关推荐
神仙别闹14 分钟前
基于C++ MFC 实现的智慧公交系统
开发语言·c++·mfc
秋田君19 分钟前
Qt_webSocket协议编程实战
开发语言·qt·websocket
ttwuai30 分钟前
Go 后台附件迁到对象存储后,path、cdnUrl 和 tenant_id 怎么一起验?
开发语言·后端·golang
一只小阿乐34 分钟前
java 语法学习 1
java·开发语言·学习
dear_bi_MyOnly34 分钟前
函数模块化:企业级项目高效之道
c++·后端·学习
码匠许师傅39 分钟前
【设计模式精讲】13.装饰器模式(Decorator)
c++·设计模式·uml·装饰器模式
卢锡荣40 分钟前
Type-C口电子产品离不开的C口逻辑专用控制芯片介绍
c语言·开发语言
顶点多余44 分钟前
算法哪些事儿---2
java·开发语言
方知我1 小时前
NumPy一小时速成
开发语言·python·numpy
OPEN-F1 小时前
C++综合实战:面向对象图书管理系统
开发语言·c++