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

题目如上:

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

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

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

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

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

相关推荐
逝雪Yuki4 分钟前
牛客——接头密匙
c++·字典树·前缀树·数据结构与算法
啊阿狸不会拉杆17 分钟前
《Java 程序设计》核心知识点梳理与深入探究
java·开发语言·python·算法·php·intellij-idea
三小尛20 分钟前
C++拷贝构造函数
开发语言·c++
源力祁老师23 分钟前
外部系统获取Odoo数据最便捷的方式
开发语言·前端·javascript
GISer_Jing40 分钟前
下次接好运~
开发语言·javascript·ecmascript
傻啦嘿哟1 小时前
代理IP并发控制:多线程爬虫的加速引擎
开发语言·php
码农葫芦侠1 小时前
C++继承中虚函数调用时机问题及解决方案
c++·qt
一只余弦函数1 小时前
《C++》STL--list容器详解
开发语言·c++·list
爱学习的小邓同学1 小时前
C++ --- stack和queue的使用以及简单实现
c++