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

题目如上:

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

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

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

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

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

相关推荐
_dindong12 分钟前
牛客101:链表
数据结构·c++·笔记·学习·算法·链表
专注前端30年14 分钟前
【JavaScript】every 方法的详解与实战
开发语言·前端·javascript
速易达网络16 分钟前
Java Web登录系统实现(不使用开发工具)
java·开发语言·前端
凡间客35 分钟前
Python编程之常用模块
开发语言·python
景彡先生35 分钟前
Python基础语法规范详解:缩进、注释与代码可读性
开发语言·前端·python
蓝创精英团队37 分钟前
C++DirectX9坐标系与基本图元之渲染状态(RenderState)_0304
前端·c++·性能优化
悟能不能悟40 分钟前
java重构旧代码有哪些注意的点
java·开发语言·重构
歪歪10042 分钟前
如何在Qt中使用VS的调试功能
运维·开发语言·网络·qt·网络协议·visual studio
筏.k2 小时前
C++ 设计模式系列:生产者-消费者模式完全指南
开发语言·c++·设计模式
liliangcsdn2 小时前
python如何写数据到excel示例
开发语言·python·excel