题目链接
题解
有一个朴素三进制状压\(dp\),考虑当前点三种状态:没考虑过,被选入集合,被排除
就有了
\(O(n3^{n})\)的转移
但这样不优,我们考虑优化状态
设
\(f[i][S]\)表示独立集大小为
\(i\),不可选集合为
\(S\)【要么是已经在独立集中,要么已经被排除了】
那么剩余点都是可选的
就枚举剩余点
\(u\),记
\(u\)相邻的集合为
\(S_u\),那么当
\(u\)加入后,集合
\(S_u\)的点都不能选,但是由于所有点都会加入排列之中,
\(S_u\)中除了
\(S\)中的点,剩余点的点会排列在
\(u\)之后,那么有
\[f[i + 1][S \cup S_u \cup \{u\}] += A_{n - |S| - 1}^{|S_u| - |S_u \cap S|}f[i][S]\] 复杂度\(O(n^{2}2^{n})\)
但是有很多没用的状态,所以可以过
#include #include #include #include #include #include