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

题目如上:

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

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

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

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

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

相关推荐
console.log('npc')3 分钟前
vue2中子组件父组件的修改参数
开发语言·前端·javascript
码点4 分钟前
【无标题】日文字库Japan.ini
开发语言
IT=>小脑虎8 分钟前
2026版 Python零基础小白学习知识点【基础版详解】
开发语言·python·学习
wjs202418 分钟前
抽象工厂模式
开发语言
lly20240619 分钟前
SVG 模糊效果详解
开发语言
期待のcode21 分钟前
Java虚拟机类加载机制
java·开发语言
Learner28 分钟前
Python运算符
开发语言·python
一晌小贪欢33 分钟前
Python 精确计算:告别浮点数陷阱,decimal 模块实战指南
开发语言·python·python入门·python3·python小数·python浮点数
superman超哥34 分钟前
Rust 范围模式(Range Patterns):边界检查的优雅表达
开发语言·后端·rust·编程语言·rust范围模式·range patterns·边界检查
程序员zgh1 小时前
Linux 系统调用
linux·运维·服务器·c语言·c++·系统安全