ABC220H - Security Camera
考虑折半,将点按照标号是否 \(\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 = \sum\limits_{p_S \& T = Q} f_S \oplus g_T
\]
即可 \(\mathcal{O}(2 ^ {n / 2})\) 计算答案。
注意到上式形式与与卷积非常类似,考虑将其转化为与卷积的形式。
枚举 \(f_S = pf, g_T = pg\),令 \(vf_Q = \sum\limits_{p_S = Q} [f_S = pf], vg_Q = [g_Q = pg]\),那么有 \(f_S = pf, g_T = pg\) 时对 \(h\) 的贡献:
\[h_Q = \sum\limits_{S \& T = Q} vf_S \times vg_T
\]
直接做与卷积即可,复杂度 \(\mathcal{O}(n2 ^ {n / 2})\)。