贪心
文章平均质量分 63
从入门到入坑
等到OneNote容量不够, 再把存货搬上来
展开
-
AcWing 257. 关押罪犯 (贪心 + 拓展域并查集)
题目描述原题链接分析首先根据怨气值ccc从大到小排序, 我们要求最小的怨气值, 所以对每一对有仇恨关系的罪犯,要尽可能的分到两座监狱中.但是存在一种情况, 这一对罪犯A,BA,BA,B必须位于同一座监狱:即两座监狱中存在罪犯CCC与这两名罪犯A,BA,BA,B中的一位有仇恨关系.而根据之前排序可知, CCC与AAA或BBB的怨气值一定大于A,BA,BA,B的怨气值,则A,BA,BA,B的怨气值 ccc 就是答案(贪心)而两座监狱, 我们可以维护拓展域并查集: 对于罪犯i,p[i]表示i原创 2021-03-14 15:56:48 · 93 阅读 · 0 评论 -
AcWing 122. 糖果传递 (贪心 绝对值不等式)
题目描述原题链接分析也可参考Y总视频讲解实现#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int N = 359;const int M = 49;int n, m;int a[N], f[M][M][M][M], cnt[5];int main(){ cin >> n >> m;原创 2021-02-18 16:07:04 · 92 阅读 · 0 评论 -
AcWing 143. 最大异或对 (01Trie树 贪心)
题目描述原题链接分析推荐参考Y总视频讲解实现#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int N = 1e5 + 9;int a[N];int trie[30*N][2]; // trie[最多有多少节点数][边权是0或1] = 当前节点的下标int n, ans, index;void insert(int val原创 2021-02-17 11:14:00 · 97 阅读 · 0 评论 -
AcWing 148. 合并果子 (贪心 哈夫曼树)
题目描述原题链接分析此题不是区间DP(区间DPDPDP的限制是每次只能合并相邻的两堆)题目要求一个最小的体力耗费值, 可以采取贪心的策略: 在每次合并时都耗费最少的体力, 即选当前数目最少的两堆(((用优先队列维护一个小根堆即可),),), 从而求出最优解此题是一个哈夫曼树的模型. 要求的最小的体力耗费值, 其实是哈夫曼树的带权路径长度W=W=W= 所有分支点权值之和也可参考Y总视频讲解实现#include <cstdio>#include <iostre原创 2021-02-17 11:13:14 · 95 阅读 · 0 评论 -
AcWing 125. 耍杂技的牛 (贪心 交换验证)
题目描述原题链接分析看不懂就参考Y总视频讲解实现#include <cstdio>#include <iostream>#include <algorithm>#include <map>using namespace std;const int N = 5e4 + 9 ;int n;int sum[N];pair<int, int> p[N]; // w, sbool cmp(pair<int,int&原创 2021-02-17 11:12:16 · 58 阅读 · 0 评论 -
AcWing 104. 货仓选址 贪心 绝对值不等式
题目描述原题链接分析贪心考虑只有两家商店a,ba,ba,b. 货仓的位置xxx到两家商店的距离lll就满足绝对值不等式`l=∣x−a∣+∣x−b∣≥∣a−b∣l = |x-a|+|x-b|≥|a-b|l=∣x−a∣+∣x−b∣≥∣a−b∣则当a≤x≤ba≤x≤ba≤x≤b时, 不等式取等,此时距离最小. 即货仓要建在两店之间(包括端点)考虑nnn家商店, nnn为奇数时, 建在最中间的商店处最优. nnn为偶数时, 建在最中间的两点之间以上两种情况, 即中位数位置是最优解实现//原创 2021-01-18 22:13:45 · 127 阅读 · 0 评论 -
AcWing100.增减序列 差分+贪心
文章目录题目描述分析实现题目描述原题链接分析题目要求通过对区间[l,r]的操作(+1或者-1)使数列中数都一样.我们发现满足上述要求的数列的差分数组的a[2…n]一定是[0,0,0,…]. a[1]是val据此, 我们可以将问题转化成经过最少次对区间[l,r]的操作使差分数组a[]变为[val,0,0,0,…]下面是贪心的部分:对原数列的区间[l,r]操作(如+1), 其差分数组会受影响: a[l] += 1, a[r+1] -= 1对于这个差分数组,我们可以对区间[l,r]有四原创 2021-01-17 15:37:52 · 156 阅读 · 0 评论 -
石油大 盒子 贪心
文章目录题目描述输入数据范围输出想法贪心的正确性实现题目描述小D在玩堆盒子的游戏,每个盒子有⼀个强度,代表它上⽅最多能堆多少个盒子。由于盒子都是⼀样⼤的,所以不能在⼀个盒子上并列放超过⼀个盒子。现在小D有n个盒子,第i个盒子的强度为xi。⼩D想知道,如果他要把这些盒子全部堆起来,至少要堆多少堆。输入第一行读入一个整数n,代表小D有的盒子个数。第二行读入n个整数,第i个整数xi表示第i个盒子的强度。数据范围对于20%的数据,n≤10;对于50%的数据,n≤1000;对于100%的数据原创 2020-12-02 23:29:44 · 232 阅读 · 0 评论