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

题目如上:

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

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

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

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

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

相关推荐
诸葛大钢铁5 小时前
如何降低Word文件的体积?压缩Word文件的三种方法
开发语言·c#
小白学大数据5 小时前
如何自动追踪 eBay 售价?Python 爬虫实战解析
开发语言·人工智能·爬虫·python
莫逸风5 小时前
【AgentScope】6.文件系统(Filesystem)详解
开发语言·windows·springai·agentscope·agnet
utf8mb4安全女神5 小时前
怎么写shell/bash脚本【if嵌套】【case】【while死循环】【while嵌套if】【for】【随机数】
开发语言·bash
zxw6105 小时前
UFOMap代码Debug
c++
ziyue75755 小时前
python进行磁盘文件迁移,不影响软件使用
开发语言·数据库·python
fpcc5 小时前
工具使用—CMake文件中的常见变量
c++
liu-yonggang5 小时前
MISRA C++:2008 — Guidelines for the use of the C++ language in critical systems
c++
爱和冰阔落5 小时前
【Python基础】从变量到面向对象:打通 Python 入门核心语法
开发语言·python
凡人叶枫5 小时前
Effective C++ 条款05:了解 C++ 默默编写并调用哪些函数
java·linux·开发语言·c++·effective c++·编程范式