久未放晴的|

TulipeNoire

园龄:1年10个月粉丝:18关注:17

「JOI 2025 Final」只不过是长的领带 2 / Just Long Neckties 2

考虑钦定了一些观众去回应怎么算。让 ij 连边,当且仅当 i<j 并且 Ai<Aj。问题就成了被选中观众的点的最小链覆盖。因为显然是偏序集,所以考虑 Dilworth 定理转化成最长反链覆盖,即最长下降子序列。

也就是我们要选出一个支配集,使得其 LDS 长度最小。用经典 dp 来做,并且我们实际上只需要用 S 来标记状态(似乎不用转化成 LDS 也能根据贪心有一样的状态)。令 fS 表示最晚能从哪里使状态变成 S,容易发现这个点越靠后越好。我们可以枚举下一个状态与当前状态变化的位置 x,那么选择的序列一定是先是一堆 S 中的数,然后是 x。并且 x 前面的 S 中的数都是能选尽量选。这样一来也就是说如果从 fS+1 到一个位置 x 中间没有两个连续的且不在 S 中的数,那么就可以对 fS{x} 产生 x 的贡献。那么对于 S 找到 fS 后面第一个连续两个数不在 S 中的位置,那么再找到这个位置前面的第一个 x 即可。特殊的,如果这样的位置不存在,就可以对答案产生贡献。

关于如何找到这样的位置:记 gi,j 表示 i 之后第一个满足 Ax=Ai 并且 Ax+1=j 的位置。这样就可以方便转移了。

时间复杂度 O(nV+2VV2),空间复杂度 O(nV)

本文作者:TulipeNoire

本文链接:https://www.cnblogs.com/TulipeNoire/p/18714513/P11665

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   TulipeNoire  阅读(21)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起