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

题目如上:

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

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

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

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

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

相关推荐
汉克老师18 小时前
GESP2025年12月认证C++八级真题与解析(单选题10-12)
c++·递归··gesp八级·gesp8级
lly20240618 小时前
jEasyUI 设置排序指南
开发语言
一起努力啊~18 小时前
算法刷题--长度最小的子数组
开发语言·数据结构·算法·leetcode
还债大湿兄18 小时前
huggingface.co 下载有些要给权限的模型 小记录
开发语言·前端·javascript
bkspiderx19 小时前
C++中的map容器:键值对的有序管理与高效检索
开发语言·c++·stl·map
Hard but lovely19 小时前
Linux: 线程同步-- 基于条件变量 &&生产消费模型
linux·开发语言·c++
汤姆yu19 小时前
基于python大数据的协同过滤音乐推荐系统
大数据·开发语言·python
爱学习的小道长19 小时前
Python Emoji库的使用教程
开发语言·python
L_090719 小时前
【C++】高阶数据结构 -- 平衡二叉树(AVLTree)
数据结构·c++
今儿敲了吗19 小时前
C++概述
c++·笔记