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

题目如上:

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

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

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

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

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

相关推荐
雾月5537 分钟前
LeetCode 941 有效的山脉数组
java·开发语言·数据结构·算法·leetcode·职场和发展
晨曦5432102 小时前
函数和模式化——python
开发语言·python
leluckys2 小时前
swift-08-属性、汇编分析inout本质
开发语言·汇编·swift
Verdure陌矣3 小时前
游戏开发中 C#、Python 和 C++ 的比较
c++·python·游戏·c#
嘤国大力士3 小时前
C++11&QT复习 (十六)
java·开发语言·c++
念九_ysl4 小时前
Java中的列表(List):操作与实现详解
java·开发语言·list
阿昆的科研日常4 小时前
Matlab进阶绘图第74期-带填充纹理的单组柱状图
开发语言·matlab·可视化·论文插图
ChoSeitaku4 小时前
NO.79十六届蓝桥杯备战|数据结构-扩展域并查集-带权并查集|团伙|食物链|银河英雄传说(C++)
数据结构·c++·蓝桥杯