
贪心
文章平均质量分 65
相关总结及OJ练习
Ypuyu
Ypuyu
展开
-
[H贪心] lc3273. 对 Bob 造成的最少伤害(贪心+排序+推公式+双周赛138_4)
因为 tx 做的是除法运算,是会丢弃一部分值的。而如果直接和 damage[y] 乘起来的话,这部分值就会和 damage[y] 作用起来,再除以 power 的话,总量就会大很多,意义就不一样了,故报错。显然我们应该尽可能的将伤害高的先消掉,然后写完代码就会发现 WA 了。想太简单了,那就推推公式看看怎么回事吧。链接:https://leetcode.cn/circle/discuss/3bwuSH/view/bRKOj5/这里实现上有个注意点:我写的时候就遇到这个问题。样例通过,但又 WA 了一遍。原创 2024-09-01 01:25:06 · 1055 阅读 · 0 评论 -
[M贪心] lc881. 救生艇(贪心+贪心证明)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:881. 救生艇2. 题目解析常规的一道贪心,思路很简单,关键仍旧是贪心思路的证明。思路:排序,尽量让重的和轻的组成一个救生艇。即,每次都会将末尾最终的安排掉。注意可能会造成 i=j 的情况,即最终仅剩余一人,那么只需要安排一条船即可。不论这个人的两倍是否大于 limit,无关紧要,反正他仅需一条船。例如 people = [3,2,2,1], limit = 3 这个样例,最终 a[i]=a[j]=2,for 循环判出条件如果直接原创 2021-08-26 01:13:30 · 199 阅读 · 0 评论 -
[M贪心] lcLCP30. 魔塔游戏(STL优先队列+堆+贪心)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:LCP 30. 魔塔游戏2. 题目解析挺不错的一道贪心问题。思路:首先顺序累加所有怪物血量,在血量初始值为 1 时,若累加完毕,sum≤0sum \le0sum≤0 则说明怎么调整也是无法保证走完所有房间且血量符合要求的。返回 -1 即可。反之,一定可以通过调整走完所有房间,大不了就将所有的负数全部放到最后,就可以了。但是如何保证调整次数最少呢?一定不能见到一个负数就操作一次吧。贪心调整思路如下:每次在我们血量 blood≤0bl原创 2021-08-23 12:50:36 · 193 阅读 · 0 评论 -
[Huffman树] aw149. 荷马史诗(哈夫曼模型+贪心)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:149. 荷马史诗2. 题目解析k叉哈夫曼树问题。n 个叶子节点合并成 1 个点,总共合并减少 n-1 个点,每次合并都会减少 (k-1) 个点,即将 k 个点合并,并新产生一个点。那么保证最后一次合并是个满 k 合并,即权值最大的层数让其尽量低,第一次合并的时候,不足 k 个,我们补充 0 即可,让其假合并,并不影响权值之和。是个常用处理方法。保证哈夫曼树的高度最小,即若有多个权值相同的节点时,选择层数最小的节点用来合并即可,这样就能保证原创 2021-07-20 17:30:19 · 168 阅读 · 0 评论 -
[贪心] aw3720. 数组重排(公式推导+贪心)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3720. 数组重排相关链接:[贪心] 耍杂技的牛(公式推导+贪心)2. 题目解析贪心。直观上来讲,只需要让每次 a[i]+b[i] 的值尽可能小即可。显然,a[i] 递增序,b[i] 递减序是正确的。但是贪心问题重点在于严格证明,本题和 [贪心] 耍杂技的牛(公式推导+贪心) 证明类似。交换两值,不会让答案变差,最终可以将最优解交换到贪心解去,且交换过程中答案不会变差。时间复杂度:O(n)O(n)O(n)空间复杂度:O(n)O原创 2021-06-23 21:09:47 · 146 阅读 · 0 评论 -
[贪心] aw3661. 重置数列(贪心+枚举+细心+aw周赛003_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3661. 重置数列2. 题目解析多看看数据范围再动手做吧…伞兵了。a[i] 的范围很小,是 [1, 100],故可以在 [1, 100] 中枚举最后数组的取值是多少,就行了。假设最终数组所有数相同且为 c,那么当 a[i]=c 时,跳过即可。当 a[i]!=c,则直接将 a[i]~a[i+k] 贪心的全部变成 c 即可。这种题又像是二分答案一样,总是以说不清的另一种方式入手…挺不错的。一开始以为只会变为众数,但是还是太年轻了…时原创 2021-06-12 20:43:06 · 229 阅读 · 0 评论 -
[贪心] aw3580. 整数配对(排序+贪心)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3580. 整数配对2. 题目解析很容易能猜出来结论,排序后,临近的两个数构成数对。关键在于贪心证明。时间复杂度:O(nlogn)O(nlogn)O(nlogn)空间复杂度:O(n)O(n)O(n)#include <bits/stdc++.h>using namespace std;const int N = 1e5+5;int n;int a[N];int main() { scanf("%原创 2021-05-28 19:01:02 · 210 阅读 · 0 评论 -
[贪心] 耍杂技的牛(公式推导+贪心)
文章目录0. 前言1. 公式推导+贪心0. 前言我个人认为,贪心问题和数学式子密切相关。先有贪心思路,再简单写出式子,重点在于式子的正确性证明。大多都是不等式的方式证明等式,而不等式又牵扯到了各类的均值、调和、绝对值不等式等等,相当有意思 ????1. 公式推导+贪心125. 耍杂技的牛样例模拟:危险系数:上面所有牛的重量之和减去自己的强壮值 重量w 强壮值s 危险系数 3 3 0-3=-3 2 5 3-5=-2 10 3 3+2-3=原创 2020-11-14 10:54:00 · 624 阅读 · 0 评论 -
[贪心+01背包] 能量石(01背包+贪心)
文章目录0. 前言1. 完全背包+求方案数+思维0. 前言相关:[背包] 背包问题算法模板(模板)01 背包调整法证明贪心问题:[贪心] 耍杂技的牛(公式推导+贪心)相关题目:114. 国王游戏1. 完全背包+求方案数+思维734. 能量石参考题解:mrk:重点参考题解辰风:能量石 十分清晰!!!!重点: 贪心证明、01 背包、思维、Google Kickstart2019 Round B Problem B贪心证明:暴力来做的话,就得枚举所有能原创 2020-11-24 17:42:05 · 349 阅读 · 0 评论 -
[线性dp] 导弹防御系统(最长上升子序列模型+贪心+dfs)
文章目录0. 前言1. LIS +贪心+dfs0. 前言强相关:[线性dp] 最长上升子序列(模板题+最长上升子序列模型) 贪心解法[线性dp] 拦截导弹(最长上升子序列模型+贪心)1. LIS +贪心+dfs187. 导弹防御系统重点: 线性 dp、LIS 问题、贪心思路:[线性dp] 拦截导弹(最长上升子序列模型+贪心)是高度只能不断下降。本题高度可以不断上升和不断下降,但需要维护其单调性。即,最少使用多少个上升、下降子序列将整个序列覆盖掉。[线性dp] 拦截导弹(最长上升子序列原创 2020-11-18 18:40:09 · 289 阅读 · 0 评论 -
[线性dp] 拦截导弹(最长上升子序列模型+贪心)
文章目录0. 前言1. LIS +贪心0. 前言强相关:[线性dp] 最长上升子序列(模板题+最长上升子序列模型) 贪心解法1. LIS +贪心1010. 拦截导弹重点: 线性 dp、LIS 问题、贪心思路:问题就是最少用多少个下降子序列来覆盖掉整个子序列首先第一问就是寻找最长的下降子序列。 可以直接转化为 LIS 问题第二问为贪心问题,首先简单说明下贪心直觉和证明方法假设现在存在很多个子序列,那么当前遍历到的这个导弹不管接到那个子序列的后面,目前来讲,它都是做这些子序列的结尾元原创 2020-11-18 17:44:48 · 344 阅读 · 0 评论 -
[Huffman树] 合并果子(哈夫曼树模型+贪心)
文章目录0. 前言1. 构建Huffman树+贪心0. 前言经典的哈夫曼树模型。关于哈夫曼树推荐大佬博文,简单了解即可。1. 构建Huffman树+贪心148. 合并果子贪心思路:每次选择最小的两个点合并,采用小根堆存储这些石子会构成一颗哈夫曼树证明:证明1: 权值最小的两个点,在哈夫曼树中的深度一定最深,且可以互为兄弟节点,即可以优先合并,且代价最小反证法,假设最小两点深度不是最深,设点 a、f 是最小的两个点。当交换点 b 和 f 后,影响到最终结果会从 3b+2f+C原创 2020-11-13 23:48:41 · 1111 阅读 · 0 评论 -
[字典树] 最大异或对(trie+贪心)
文章目录1. trie+贪心2. 简单优化1. trie+贪心Biu很明显,暴力查找双重循环,时间复杂度 O(n2)O(n^2)O(n2),大约 101010^{10}1010 次计算肯定超时了。可以利用 trie 来存所有数的数值,然后在进行查找的时候尽量选择当前位相异的路径走下去就行了,这也是一个贪心的思路,从高位开始,尽量选择相异的位 (异或为1) 的路径,所得到的异或结果肯定是最大的。注意:trie 中所有的节点个数应该是 105∗3210^5 * 32105∗32 开 4e64e^6原创 2020-10-22 22:49:26 · 510 阅读 · 0 评论