Loading

CF436E Cardboard Box

solution

首先考虑这样一个朴素的贪心:初始将所有 \(a_i\) 弹入堆中,然后取出最小的并将 \(b_i - a_i\) 弹入堆中。

下面这组数据可以卡掉:

2 2
3 4
2 5

一个正确的贪心方法是:初始将所有 \(a_i\) 弹入堆 \(p\) 中,所有 \(b_i\) 弹入堆 \(q\) 中,如果 \(q\) 中的最小值小于 \(p\) 中的最小两个值的和,那么意味着我目前选择 \(q\) 中的可能最优,不过为了保险,我们将其从 \(q\) 中弹出,花费 \(a_i\) 的代价取得一星,然后将 \(b_i - a_i\) 弹入 \(p\) 中。仔细研究一下,足够保险的贪心策略使得其正确权衡选择一星还是两星。

posted @ 2024-11-25 20:00  Alexande  阅读(13)  评论(0)    收藏  举报