
贪心
鹭天
敦立坤我是你爹
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【贪心 && 题解】 Buy One, Get One Free
题目描述:Solution首先,我们将问题转化:最少化花钱数=最大化免费显卡数最少化花钱数 = 最大化免费显卡数最少化花钱数=最大化免费显卡数于是,我们将问题转化为如何求最大化的显卡数。由于相同之间的显卡不能互相转换(意思能理解吧),所以我们需要将同价值的显卡存放在一起,并记录数量。即一个二元组(价值,数量)(价值,数量)(价值,数量)由于购买了一个显卡之后,我们可以获得价格小于他的任意显卡,所以我们需要将显卡从大到小排序一遍。对于我们免费获得的显卡,我们用一个小根堆来维护。我们考虑第i原创 2020-07-23 20:33:45 · 594 阅读 · 1 评论 -
【题解 && “反悔式”贪心】 种树
题目描述:Solution首先有一个最初的想法:将点权从大到小排序,选择前k大的点累加。但是很显然,这个算法是很容易找到反例的。所以,我们一旦选择一个点,就可以新加一个点替换当前点,当前的点权就是a[next[x]]+a[last[x]]−a[x]a[next[x]] + a[last[x]] - a[x]a[next[x]]+a[last[x]]−a[x],即相当于一次反悔操作,不要当前点,而要他左右两边的点。这个操作,可以用堆 + 链表维护。那么为什么对于一个点,要么他左右两个点不选,原创 2020-07-20 21:29:46 · 466 阅读 · 0 评论 -
贪心策略笔记
贪心策略笔记概念:在学贪心之前,我们要先了解贪心是什么东西。首先,贪心是一种策略,一种思想。在对问题进行求解时,总是能作出当前看来最好的选择,但是它不是从整体最优考虑,它所作出的仅是在某种意义上的局部最优解。 贪心没有固定的算法框架,它在不同的题目中出现的形式都是不一样的。但是它算法设计的关键是贪心策略的选择。也就是说想要贪心,你就得从题目的某个条件为基础,根据这个条件选择如...原创 2017-11-27 20:00:24 · 375 阅读 · 0 评论 -
【题解&&贪心&&作业】51nod1270 数组的最大代价
题目传送门题目描述:数组A包含N个元素A1, A2…AN。数组B包含N个元素B1, B2…BN。并且数组A中的每一个元素Ai,都满足1 <= Ai <= Bi。数组A的代价是公式是两个相邻元素的差的绝对值之和给出数组B,计算可能的最大代价S。输入第1行:1个数N,表示数组的长度(1 <= N <= 50000)。第2 - N+1行:每行1个数,对应数组元素Bi.原创 2018-12-27 15:22:53 · 227 阅读 · 0 评论 -
【题解&&作业&&贪心】51nod1053 最大M子段和V2
题目传送门题目描述:N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的。如果M >= N个数中正数的个数,那么输出所有正数的和。例如:-2 11 -4 13 -5 6 -2,分为2段,11 -4 13一段,6一段,和为26。输入第1行:2个数N和M,中间用空格分隔。N为整数的个数,M为划分为多少段。(2 &...原创 2019-01-02 16:46:22 · 227 阅读 · 0 评论 -
【题解 && 海亮集训 && 刷题】 阿狸和桃子的游戏
题目传送门题目描述:阿狸和桃子正在玩一个游戏,游戏是在一个带权图 G=(V,E)G=(V,E) 上进行的,设节点权值为 w(v)w(v),边权为 c(e)c(e)。游戏规则是这样的:阿狸和桃子轮流将图中的顶点染色,阿狸会将顶点染成红色,桃子会将顶点染成粉色。已经被染过色的点不能再染了,而且每一轮都必须给一个且仅一个顶点染色。为了保证公平性,节点的个数 NN 为偶数。经过 N/2N/2 轮...原创 2019-07-07 07:25:32 · 217 阅读 · 0 评论 -
【金华集训 && 笔记】Day12——贪心
T1考虑贪心我们希望代价最小,就是想让每一天的花费最小(生产 + 保存)只要从前往后动态维护一个花费的一个前缀就可以O(n)O(n)O(n)的过此题T2这个是一道挺简单的一个贪心从前往后扫,如果当前位比后面的要大,那么就删除当前位当只能删除一次的时候,这个贪心很好证明,但是删除M次如何证明呢?当从前往后扫删除时,这样的删法很显然是将删除的当前位的一个数字降低了,因为后面的数...原创 2019-08-08 11:35:02 · 152 阅读 · 0 评论 -
【贪心 && 题解】 HDU 5773 The All-purpose Zero
题目传送门题目描述:你有一个长度为 n个序列 a,其中,值为0 的元素可以被修改成为任意一个 整数。你需要最大化这个序列的最长上升子序列长度。Solution我们来考虑贪心做法。首先,我们的最优解一定是包含所有的0的,为什么?对于一串数,它其中的一个数能够用0代替,而其中没有的数则可以用0构造,也就是说我们多用0就能够有更多的机会(不服的人大可举一举是否有反例。其实我也不清楚 )那...原创 2019-08-09 14:53:37 · 192 阅读 · 0 评论 -
【题解 && 贪心 && 堆】 区间交
题目描述:Solution对于一个包含的区间,它的左右端点一定是由左端点的最大值以及右端点的最小值构成我们考虑贪心将区间按照左端点从小到大排序,这样就不用考虑左端点的关系了。对于右端点,我们需要维护一个右端点最小值的最大值即可用堆维护,每加进一个区间,就更新堆即可Code#include<bits/stdc++.h>using namespace std;...原创 2019-08-09 16:01:56 · 220 阅读 · 0 评论