「JOI 2025 Final」只不过是长的领带 2 / Just Long Neckties 2
考虑钦定了一些观众去回应怎么算。让 向 连边,当且仅当 并且 。问题就成了被选中观众的点的最小链覆盖。因为显然是偏序集,所以考虑 Dilworth 定理转化成最长反链覆盖,即最长下降子序列。
也就是我们要选出一个支配集,使得其 LDS 长度最小。用经典 dp 来做,并且我们实际上只需要用 来标记状态(似乎不用转化成 LDS 也能根据贪心有一样的状态)。令 表示最晚能从哪里使状态变成 ,容易发现这个点越靠后越好。我们可以枚举下一个状态与当前状态变化的位置 ,那么选择的序列一定是先是一堆 中的数,然后是 。并且 前面的 中的数都是能选尽量选。这样一来也就是说如果从 到一个位置 中间没有两个连续的且不在 中的数,那么就可以对 产生 的贡献。那么对于 找到 后面第一个连续两个数不在 中的位置,那么再找到这个位置前面的第一个 即可。特殊的,如果这样的位置不存在,就可以对答案产生贡献。
关于如何找到这样的位置:记 表示 之后第一个满足 并且 的位置。这样就可以方便转移了。
时间复杂度 ,空间复杂度 。
本文作者:TulipeNoire
本文链接:https://www.cnblogs.com/TulipeNoire/p/18714513/P11665
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步