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

题目如上:

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

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

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

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

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

相关推荐
你怎么知道我是队长15 小时前
C语言---循环结构
c语言·开发语言·算法
纪元A梦15 小时前
贪心算法应用:出租车调度问题详解
贪心算法
老赵的博客15 小时前
c++ unqiue指针
java·jvm·c++
o0o_-_15 小时前
【go/gopls/mcp】官方gopls内置mcp server使用
开发语言·后端·golang
Dxy123931021616 小时前
python把文件从一个文件复制到另一个文件夹
开发语言·python
程序猿编码16 小时前
基于 Linux 内核模块的字符设备 FIFO 驱动设计与实现解析(C/C++代码实现)
linux·c语言·c++·内核模块·fifo·字符设备
怎么没有名字注册了啊16 小时前
MFC_Install_Create
c++·mfc
酷飞飞16 小时前
Qt Designer与事件处理
开发语言·qt·命令模式
天雪浪子17 小时前
Python入门教程之赋值运算符
开发语言·python
Wadli17 小时前
C++语法 | static静态|单例模式
开发语言·c++·单例模式