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

题目如上:

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

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

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

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

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

相关推荐
疯狂成瘾者11 小时前
Java 常见 Map 对比总结:HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap
java·开发语言·spring
XMYX-011 小时前
16 - Go 协程(goroutine):从基础到实战
开发语言·golang
txxzjmzlh11 小时前
Thread 类的基本用法
java·开发语言
machnerrn11 小时前
matlab实现直流伺服电机 PID 控制系统仿真系统(含源码+资料报告+说明文档等)
开发语言·matlab
Hello--_--World11 小时前
JS:this指向、bind、call、apply、知识点与相关面试题
开发语言·javascript·ecmascript
沐知全栈开发11 小时前
CSS Text(文本)
开发语言
前进吧-程序员12 小时前
现代 C++ 异步编程:从零实现一个高性能 ThreadPool (C++20 深度实践)
开发语言·c++·c++20
Rsun0455112 小时前
10、Java 桥接模式从入门到实战
java·开发语言·桥接模式
jieyucx12 小时前
Golang 完整安装与 VSCode 开发环境搭建教程
开发语言·vscode·golang
pearlthriving12 小时前
c++当中的泛型思想以及c++11部分新特性
java·开发语言·c++