题目

拜谢 @CXiii 提供题目。

NOIP 模拟赛签到题。我们有 $2^n$ 个点,编号 $0 \cdots 2^n-1$。对于一个包含 $[0, 2^n)$ 中整数的集合 $S$,我们有图 $G_S$:

当且仅当 $\exist x \in S \text{ s.t. } i \text{ xor } j = x$ 时,$i$ 与 $j$ 间有一条无向边。

对所有满足 $G_S$ 连通,且元素数量(在使得图连通的集合中)最小的 $S$ 计数。模 998244353。

初步分析与转化

使用异或的性质。$i \text{ xor } j = k \leftrightarrow i \text{ xor } k = j$,所以,可以视为我们从一个点 $i$ 出发,每一步异或上一个 $S$ 中元素走到另一个点,重复任意多次走动而抵达终点 $j$。

考虑异或的结合律。所以这个过程整体等价于 $i$ 异或上一个常数 $k$。我们知道,$k$ 是 $S$ 中的一些元素的异或和,但又有 $k = i \text{ xor } j$。

注意到,由于 $i, j$ 可以任意取值,$k$ 也可以取任意值。这意味着,$\forall k \in [0, 2^n), \exist s \subset S \text{ s.t. } \bigoplus s = k$,也就是说 $S$ 是一个线性基。

到这里,虽然不算显然,但确实是简单的。下面就是对线性基计数。

我不会数数!

这个数数把我击倒了。不过其实不难。

先考虑将集合的计数转化为排列的计数(即区分顺序),这样我们可以考虑一个个依次选取向量(元素)的过程。

假设我们已经选取了 $i$ 个向量。第 $i+1$ 个向量可以如何选取?

根据线性基的定义,显然这个向量不能和之前的向量线性相关。那么容斥,算出前 $i$ 个向量的张成空间的大小,再用全集 $2^n$ 减去这个大小。

前 $i$ 个向量的张成空间的大小……注意到它等于 $2^i$。为什么?因为向量分解的唯一性,反过来用就是不会有两种线性组合对应同一个向量,即随意从前 $i$ 个向量中选取两个子集,它们的异或和不等。那么张成空间大小等于子集数量,自然是 $2^i$。

以上是一个必要条件。注意到它是充分的。

那么这就成为智障题了。给出最终结论:

$$ \text{Ans} = \prod_{i=0}^{n-1} (2^n - 2^i) \pmod{998244353} $$

当然这是对排列的计数。对集合的计数除以全排列即可。

$$\boxed{\text{Final\_ans} = \frac{1}{n!} \prod_{i=0}^{n-1} (2^n - 2^i)}$$