反悔贪心

反悔贪心分为反悔堆和反悔自动机,其中反悔自动机比较高级。

反悔堆

反悔堆一般维护的是当前决策中的最劣决策,如果有更优决策就会替换最劣决策,一般用堆维护。

例题:建筑抢修

如果可以修直接修,然后把消耗时间放进堆里,如果不能修就找堆里有没有消耗时间比当前多的,替换一下一定不劣。

反悔自动机

这个比较高级,我个人理解这两者的区别在于反悔堆需要和以前的操作比较,然后考虑是否反悔,而且不会重复考虑一个决策,一般用于有顺序的 \(01\) 决策问题。

而反悔自动机是在贪心过程中融入的反悔过程。

例题:种树

这个题就十分巧妙啊,当你选了一个点后,他会把这个点的权值赋为旁边两个点的权值 \(y_1,y_2\) 的和减去这个点的原权值 \(x\)

这样,如果在后面的决策中选了这个新权值,答案为 \(x + y_1 + y_2 - x\),即为 \(y_1+y_2\),就成功地进行了一次反悔。

总结

反悔贪心实际上就是给正常的贪心多了一个反悔的机会,而有时普通贪心无法是局部最优到达全局最优,所以这时会有两个做法,一个是 dp,一个是反悔贪心,dp 的转移类似于在一个 DAG 上,而对于反悔贪心来说,每个决策点选择后,向答案贡献,先后将这个决策点删除,然后新建一个反悔决策点,或者是,直接用更优的决策替换。

posted @ 2025-10-23 12:02  lichenxi111  阅读(10)  评论(0)    收藏  举报
浏览器标题切换
浏览器标题切换end