ABC220H

考虑折半,将点按照标号是否 (le frac{n}{2}) 分成两个集合 (S_1, S_2)

首先原问题的形式有点奇怪,我们不妨统计没有被覆盖覆盖的边为偶数条的情况。

这样一来问题转化为白点 导出子图 的边数为偶数的情况,这与原问题等价。

考虑 (S_1, S_2) 中怎样的两个集合合并是合法的,形式化地,有:

(f_S(S subseteq S_1))(S) 这个集合导出子图边数的奇偶性,类似地定义 (g_T(T subseteq S_2)),同时令 (E_{S, T}(S subseteq S_1, T subseteq S_2)) 为左部集合 (S) 到右部集合 (T) 的边数奇偶性,那么 (S, T) 合并合法当且仅当:

[f_S oplus E_{S, T} oplus g_T = 0 ]

直接这样判定很没有前途,因为 (E) 的总量已经达到了 (2 ^ n) 级别,因此考虑转移判定方式。

(p_S(S subseteq S_1))(S_2) 中与 (S) 连边为奇数的点构成的点集,那么判定条件可以改写为:

[f_S oplus ((p_S & T) & 1) oplus g_T = 0 ]

注意到中间部分很特殊,于是我们考虑固定中间部分,统计:

[h_Q = sumlimits_{p_S & T = Q} f_S oplus g_T ]

即可 (mathcal{O}(2 ^ {n / 2})) 计算答案。

注意到上式形式与与卷积非常类似,考虑将其转化为与卷积的形式。

枚举 (f_S = pf, g_T = pg),令 (vf_Q = sumlimits_{p_S = Q} [f_S = pf], vg_Q = [g_Q = pg]),那么有 (f_S = pf, g_T = pg) 时对 (h) 的贡献:

[h_Q = sumlimits_{S & T = Q} vf_S imes vg_T ]

直接做与卷积即可,复杂度 (mathcal{O}(n2 ^ {n / 2}))

GO!
原文地址:https://www.cnblogs.com/Go7338395/p/15363646.html