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

题目如上:

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

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

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

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

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

相关推荐
2401_8762213418 分钟前
Reachability Query(Union-Find)
c++·算法
yueyuebaobaoxinx2 小时前
MATLAB 与 Simulink 联合仿真:控制系统建模与动态性能优化
开发语言·matlab·性能优化
躲着人群3 小时前
次短路&&P2865 [USACO06NOV] Roadblocks G题解
c语言·数据结构·c++·算法·dijkstra·次短路
superlls3 小时前
(计算机网络)JWT三部分及 Signature 作用
java·开发语言·计算机网络
一只鲲4 小时前
56 C++ 现代C++编程艺术5-万能引用
开发语言·c++
小欣加油4 小时前
leetcode 1493 删掉一个元素以后全为1的最长子数组
c++·算法·leetcode
liulilittle4 小时前
.NET反射与IL反编译核心技术
开发语言·数据库·c#·.net·反射·反编译·il
扛麻袋的少年4 小时前
6.Kotlin的Duration类
android·开发语言·kotlin
争不过朝夕,又念着往昔5 小时前
即时通讯项目---网关服务
linux·c++·vscode
蓝风破云5 小时前
C++实现常见的排序算法
数据结构·c++·算法·排序算法·visual studio