QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: alpha1022

Posted at: 2026-01-28 02:25:47

Last updated: 2026-01-28 02:25:52

Back to Problem

题解

做一些基本的推理。如果一个贤者不知道任何咒语,他第一天就会消失;反过来说,如果第一天无事发生,说明每个人都至少知道一条咒语。第二天,如果一个贤者眼里有贤者不知道咒语,即有人不跟他知道相同的咒语,则他会在这一天消失;反过来说,如果第二天无事发生,说明任意两个贤者都至少知道同一条咒语。

以此类推,如果第 $t$ 天无事发生,说明任意 $t$ 个贤者都至少知道一条相同的咒语。我们容易想到将不知道每个咒语的两个贤者连一条边,那么任意 $t$ 个贤者都至少知道一条相同的咒语等价于任意 $t$ 个点都不覆盖所有的边。

显然,答案就是 $\le k$ 个点的最小点覆盖,以及最小点覆盖的可行点。

对于独立集 / 点覆盖问题,有一类搜索较为常用:若所有点度数 $\le 2$,则图全为环和链,可以直接解决;否则,考虑是否选择度数最大的点,若不选择会导致与其相邻的点都必须选择。

我们考虑这样一个搜索对 $k$ 的影响:若选择了度数最大的点,$k$ 相当于减少 $1$;否则,$k$ 至少减少 $3$。

设 $T(k) = T(k-3) + T(k-1) + \Theta(1)$,解特征方程容易证明 $T(k) = O(1.466^k)$,因此时间复杂度为 $O(1.466^k n)$。

Comments

No comments yet.