「最初与最后的无名弹幕」
一道玄妙的状态压缩 dp。
设
设
则我们所求的答案
(
这可以在
-
计算
g(S)
求出满足两个端点\in S 的边的个数cnt ,则g(S)=2^{cnt} ,可以在\Theta(2^nm) 内完成、 -
计算
f(S)
根据容斥原理,f(S)= 所有点集为S 的子图个数- 所有点集为S 的不连通子图个数。
前面那部分=g(S)
后面那部分的话……钦定一个点v\in S ,把不连通子图分成两部分:包含v 的连通块,不包含v 的其他部分。
则可以列出式子f(S)=g(S)-\sum_{v\in T\subsetneqq S}f(T)\times g(\mathrm{C}_ST) 由于枚举所有子集的子集是
\Theta(3^n) 的,所以这部分也是\Theta(3^n) 的。
总时间复杂度为\Theta(3^n+n2^n+m2^n) 。