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

题目如上:

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

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

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

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

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

相关推荐
laimaxgg9 分钟前
高并发内存池|二、Common
c++·性能优化
June`20 分钟前
专题五:floodfill算法(太平洋大西洋水流问题)
c++·算法·leetcode·深度优先·剪枝
苦学编程的谢31 分钟前
多线程进阶
java·开发语言·java-ee
牛马baby1 小时前
Java高频面试之并发编程-18
java·开发语言·面试
dhxhsgrx1 小时前
PYTHON训练营DAY30
开发语言·python
yanjiee1 小时前
Cursor无法使用C/C++调试的解决办法
c语言·开发语言·c++·vscode
martian6651 小时前
Tomcat多应用部署与静态资源路径问题全解指南
开发语言·tomcat·系统安全
纸包鱼最好吃2 小时前
java基础-关键字:static、单例模式
java·开发语言
爱吃涮毛肚的肥肥(暂时吃不了版)2 小时前
仿腾讯会议——添加音频
c++·算法·面试·职场和发展·音视频·腾讯会议
学习使我变快乐2 小时前
C++:单例模式
开发语言·c++·单例模式