浅谈几类贪心解法

简介

贪心算法(greedy algorithm),一种通过观察题目特性,思考后得到普适数学方法进而以较低的时间复杂度解决问题的算法。重点在于如何贪心、如何证明贪心正确性(此处不做过多说明)。
本文将讨论几种常见的贪心类型与对应的解题技巧。

排序类贪心

题目形式

给定一个一个或几个键值的序列,通过进行一些操作,使得定义的贡献最大化/最小化。

方法分析

1.邻项交换法

1.1 内容:通过比较相邻两个元素交换前后对答案的贡献对序列进行排序,使得序列成为要求的最优解

1.2 注意:此方法要求排序后得到的最优序列唯一所有情况均为最优解,否则会出现局部最优解无法推得全局最优解。

1.3 例题:

A.国王游戏
解法分析:不妨考虑相邻元素 \(i\)\(i+1\),假设序列已经排好序。那么 \(i\) 的答案为 \(\frac{ \prod_{j=0}^{i-1}a_j}{b_i}\)\(i+1\) 的答案为 \(\frac{ \prod_{j=0}^{i}a_j}{b_{i+1}}\),若 \(i\) 在前更优,即

\[\max(\frac{1}{b_i},\frac{a_i}{b_{i+1}})\times \prod_{j=0}^{i-1}a_j < \max(\frac{1}{b_{i+1}},\frac{a_{i+1}}{b_{i}})\times \prod_{j=0}^{i-1}a_j \]

posted @ 2026-09-07 16:09  LYZHaHa  阅读(2)  评论(0)    收藏  举报