题解 P7839 「Wdoi-3」夜雀 singing (思路非常好的一道题)

代码细节非常多的一道题。这里只说思想了先。

首先,找到那些安全树。所有的乌鸦最后一定会到达某一棵安全树上。
因此,对于每只乌鸦,分别向左和向右暴力寻找,看是否可到达安全树。

筛掉可以自己走到的乌鸦。剩下的都是要依靠飞行点的乌鸦。

问题转化: 对于一堆线段,在其间放点并覆盖所有线段。

不妨按照 \(l_i\) 排序,可知肯定放在 \(r_i - 1\) 处最优,因为排序后这样可以尽可能覆盖更多的线段。

最后记得要加 \(1\),因为任意某一棵安全树上也需要放一个飞行点。

posted @ 2022-09-21 23:22  雪之下,树之旁  阅读(27)  评论(0编辑  收藏  举报