20260908 - 反悔贪心 总结
前言
反人类贪心——!
必须说的一点是,你可以把我看做根本没学过反悔贪心。我接触反悔贪心大概是这样的(我记不太得了),我在做题(我也不知道是哪里的题,可能是模拟赛或者别的什么),然后发现不会做,看题解,发现用到反贪,然后临时理解了一下,补掉这道题。这样的题目我也只搞过 \(<5\) 道。
所以我反贪是弱飞了的。所以当我知道是反贪专题的时候我就知道要炸了。
哈哈哈。
F 我用 wqs 做过,但是我已经不记得 wqs 是一坨什么了。而且有个问题是,我 wqs 真的写过总结吗 /yun 为啥记忆这么模糊。
这不重要啦。
A - Work Scheduling G
非常的难啊。
首先肯定优先做截止时间早的事情,那么先排个序,然后枚举 \(i\) 表示当前考虑到(排序后的)第 \(i\) 件事情,每次都贪心地选择做当前这件事。但是如果 \(i\) 比当前这件事情的截止时间要大的话,这件事在当前状态下就做不了,只能去除掉若干个(事实上每次最多一个啦)事件。而去除的原则当然是选择价值最小的啦——因为每件事情需要的时间都是一样的嘛。
B - Potions (Hard Version)
我一个开的题,也是全场最简单的。
一样的反贪,每次考虑选择当前的药水,然后计算当前的生命值。如果生命值 \(<0\) 了,就不断从前面喝过的药水里选择带来影响最小(可能为负数)的,然后把这个去掉。这个过程用优先队列维护。
C - Ignore Operations
首先,当出现赋值操作的时候,前面的操作做与不做都无意义,全部可以看做是作废了,所以这启示我们可以从后往前做(?
这个解释很粗糙,而事实就是这样。总之,我们倒着搞。如果当前是一个 + 的操作,如果非负则一定做(做一定不会比不做差),否则选择性做(大概就是可以选不超过 \(k\) 个最小的不做,这个过程用优先队列维护)。如果当前是一个赋值操作的话,就用当前赋值的 \(x\) 值加上当前后缀的和,更新答案。然后能接受的不选数量 \(k \gets k-1\)。
然后如果存活到最前面 \(k\) 还非负,那么最终的 \(sum\) 也可以作为答案。
大概就是这样子啦。
D - Buy Low Sell High
优先队列小根堆一下,每次我们考虑队头,如果比 \(a_i\) 要小的话那肯定是去购买队头然后以 \(a_i\) 的价格卖出,然后塞进去一个 \(a_i\)。然后塞进去一个 \(a_i\)。
注意,当 \(a_i\) 能卖出的时候,总共塞进去 \(2\) 个 \(a_i\),否则是塞进去 \(1\) 个。
这是干嘛?!??!!?很简单,能卖出的塞进是表示以后能换成卖其他价格,更优;所有都塞进去的那个,是表示以后用来购进的。这样说应该能听懂我的意思吧 /kel。
总之这个做法还是比较巧妙的。我记得我做过这种类似的题,但是当时短路了一下,卡了一会才想起来,还是太菜了。
E - Least Cost Bracket Sequence
如果已经定了是左右括号,我们就没得动,对应 \(sum\) 增加或减少。否则先让它们都是右括号,然后放进优先队列备选。一旦当前 \(sum\) 为负数,这就不合法了吧,我们就需要去优先队列里找替换(右括号变成左括号)代价最小的那个(没有就一定就无解了嘛),然后替换,直到 \(sum\) 变回非负。
最后,如果 \(sum\) 不为 \(0\) 也无解,否则输出方案即可。这个方案在我们中途反贪的过程中就可以搞定,对吧。
F - 种树
这题的反贪就在于一个核心思想:你不选 \(a_i\) 了,那么 \(a_{i-1}\) 和 \(a_{i+1}\) 肯定之前没被选,我们就可以选它们。这就是这题的核心思路。
然后就没有什么了呀,我们在更新的时候,如果选了 \(a_i\),就把 \(i-1\) 和 \(i+1\) 两个节点删掉,因为它们之后就不能被选了对吧。但是反贪可以再贪到它们,那么反贪的编号为 \(i\),就把原来 \(i-1\) 左边和 \(i+1\) 右边的也毙掉了,也选不了了。用链表维护。
这个过程你细想还是挺巧妙的,每个细节都对上了。
G - 种树
和上一题一样,处理一些细节,以及在链表那里,让 \(1\) 的左边是 \(n\)、\(n\) 的右边是 \(1\) 即可。
总结
反悔贪心基本就基于一个思想吧,就是你不选这个了是为了什么,或者说你不选这个了是选其他的什么。反贪一般会用到优先队列、set 之类来维护一个最大最小的极值情况方便挑选反悔的情景。
想通整个反悔的流程就好做了。显然我是想不通的,所以我是一个菜比)。
反贪好可怕。
mmt:你们发现了吗,今天的这些题目代码都这么短,没有超过 \(20\) 行的,和周末的那个比是不是清爽多了。
:我去我去我去,那我宁愿写打磨你啊,我不要写反贪啊,我不会做啊。
就是就是,比起思维,我码力还好一些啊 /dk。
没办法喵,还是得练思维的。

浙公网安备 33010602011771号