CF1292F Nora's Toy Boxes

CF1292F Nora's Toy Boxes [* hard]

给定 \(n(n\le 60)\) 个不同的 \(\le 60\) 的正整数,当 \((i,j,k)\) 满足 \(a_i|a_j\)\(a_i|a_k\) 时可以将 \(a_k\) 删除,求删除最多数的删除序列数。

\(\rm Sol:\)

\(a_i|a_j\),那么连边 \(a_i\to a_j\),接下来我们对于每个弱连通图单独进行考虑。

一个显然的性质是,若 \(j\to k,i\to j\) 那么 \(i\to k\),即整除的传递性。

先考虑结尾序列,显然度数为 \(0\) 的点必然不可以删除,对于这张弱联通图,我们记 S 为度数为 \(0\) 的点的集合,T 为度数不为 \(0\) 的点的集合。

我们可以证明,任意选 T 中一个点都是一个可以得到的删除序列的终止状态。

接下来考虑进一步转换,事实上,假设知道一个终止状态,然后我们每次给其增加一个可以遍历到的节点,那么一个遍历序列实际上就可以确定一个删除序列。

然后注意到此图为弱连通图,那么任意两点之间都存在边直接或间接相连,考虑初始有一个点 \(x\),假设 \(u\) 可以遍历到 \(x\),那么 \(u\) 能遍历到的所有节点 \(x\) 都可以遍历得到。

考虑一种遍历的传递性,然后就感觉这个 \(x\) 可以遍历到所有节点(证起来也很好证)

于是问题变为考虑一张由整除关系建立的图,每次可以访问一个节点然后获得所有能够访问到他的节点,然后可以遍历这些节点能够遍历的节点的并集中的一个节点,求方案数。

然后接下来我们可以证明 \(|S|\le \frac{60}{4}\)

显然的事实是,\(S\) 内的点都 \(\le 30\),否则这个点没有出边即无法构成弱联通,其次,由于整除关系即若 \(i|j\) 那么我们连边 \(i\to j\),那么 S 内的点的最大值不会超过 \(1\sim 30\) 的点构成的独立集的大小。

对于 x 为奇数,加入的每个节点都会导致 \(2x\) 无法加入,换而言之 \(S\) 的大小上界为 \(15\),于是我们考虑一个状压 dp,然而直接处理需要知道每个节点选或者不选,这非常难受,考虑这样的一件事,我们实际上只需要知道能够遍历到当前点集 T 中的点 \(x\) 构成的集合 S 具体如何即可。

接下来将 T 集中的点进行分类,对于当前 S,如果加入他无法改变 S,那么设其为 S 的非关键点,否则设为关键点,这样的话对于当前 S,关键点一定没有被加入,我们进行 dp 实际上只需要对非关键点考虑遍历即可,设 \(f_{S,i}\) 表示当前考虑到集合 S,内部可以遍历到的节点已经访问了 \(i\) 个(当然要预处理点总数 \(c\)),那么转移有两类:

  • 访问关键点,那么 S 改变。
  • 访问非关键点,那么 \(i+1\) 即可。

一个 brute 是考虑对每个初始被选入 T 上的点进行一次 dp,不过事实上只需要将 \(f_{S,1}\) 设为 \(1\) 即可,然后 dp 的第二类转移是复杂度瓶颈,不过这一部分常数极小,所以复杂度上界为 \(\mathcal O(2^{\frac{n}{4}}\times n^2)\)

posted @ 2020-09-11 19:48  Soulist  阅读(166)  评论(0编辑  收藏  举报