以 CF1767E 为典型例子。
不难发现可以转化为点数 \(40\) 的最大独立集。
以下算法:
分成前 \(20\) 个点和后 \(20\) 个点,分别状压处理。
后半部分:枚举一种状态,先 check,然后找到在前半部分里面不能取的,从状态 \(\text{sta} = 2^{20} - 1\)(就是初始均可选择) 里面抠掉这些不合法的,去查询前半部分预处理出来的一个表格。
前半部分:直接 check,然后 SOSDP 预处理。
总时间复杂度是 \(O(2^mm^2)\) 的。
如果看到数据范围是 \(35 \sim 50\) 的样子,可以考虑这个东西。
标签:20,个点,Trick2,前半部,NPC,40,check From: https://www.cnblogs.com/BreakPlus/p/16990314.html