【CF1463F】Max Correct Set(结论)

题意:

给定 n,求最大的 |S| 使得 S{1,,n} 且对于任意 a,bS|ab|x|ab|y

n109x,y22

题解:

直接上结论:

  • 对于一个长为 x+y 的合法方案,它重复若干次得到的方案也是合法的。

    证明:否则若出现非法情况,即存在 i,j 在相邻两段都被选了且 ji{x,y},那么考虑 j 对应的上一段的也被选了的位置 j(x+y),发现 i(j(x+y))=x+y(ji){x,y}。这是段内的非法情况,矛盾。

  • 最优方案一定是某长为 x+y 的方案重复无限次后的前缀。

    证明:设 nmod(x+y)=r。据此,我们将任意合法方案按如图 A 方式划分为段:

    设每一段中被选的元素数量分别为 a1,,a2k+1。找到使得 ai+ai+1 最大的 i,那么考虑用第 i 段和第 i+1 段对应地去替换其他段,根据第一个结论可知替换后方案仍然是合法的。

    然后考虑证明替换后答案不劣。不妨设 i 为奇数(偶数同理),如图 B,根据定义可知绿色段都小于等于红色段,所以绿色段部分整体是不劣的。而根据 ai+ai+1ai+1+ai+2,可知第 i+2 段被第 i 段替换后也是不劣的。从而整体的答案是不变小的。

那么现在只需知道这个长为 x+y 的方案是什么即可。总贡献相当于给该方案前 r 个数赋权为 k+1 而给剩下的后 x+yr 个数赋权为 k

连边 (i,i+x),(i,i+y),我们要求的实际上是该图的最大权独立集。而注意到在只考虑前 x+y 个数的情况下,每个数恰好有两条邻边(ix,i+y 恰有一者在 [1,x+y] 中,i+x,iy 也是恰有一者在 [1,x+y] 中),从而该图是若干个环。而环上的最大权独立集是容易线性求得的。

总时间复杂度 O(x+y)

posted @   ez_lcw  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示