CF1446C Xor Tree

题目描述

给定一个由互不相同的非负整数构成的序列 $(b_1, b_2, \dots, b_k)$,我们按照如下方式判断该序列是否为“好”序列: - 考虑一个有 $k$ 个节点的无向图,每个节点上分别写着 $b_1$ 到 $b_k$ 这 $k$ 个数。 - 对于每个 $i$($1 \leq i \leq k$):找到一个 $j$($1 \leq j \leq k$,$j \neq i$),使得 $b_i \oplus b_j$ 在所有满足条件的 $j$ 中最小,其中 $\oplus$ 表示按位异或操作。然后,在编号为 $b_i$ 和 $b_j$ 的节点之间连一条无向边。 - 如果最终得到的图是一棵树(即连通且无环),则称该序列为“好”序列。 注意,对于某些 $b_i$ 和 $b_j$,可能会尝试两次在它们之间连边,但实际上只连一次。 下面给出一个例子(对应第一个测试用例的图片)。 序列 $(0, 1, 5, 2, 6)$ 不是“好”序列,因为无法从 $5$ 到达 $1$。 然而,序列 $(0, 1, 5, 2)$ 是“好”序列。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1446C/787661480e10ca394e5bb0097a1db13aac775e6e.png) 现在给定一个由互不相同的非负整数构成的序列 $(a_1, a_2, \dots, a_n)$,你可以删除其中的一些元素(也可以一个都不删),使得剩下的序列是“好”序列。请问,最少需要删除多少个元素,才能使剩下的序列是“好”序列? 可以证明,对于任意序列,总可以删除一些元素,至少剩下 $2$ 个数,使得剩下的序列是“好”序列。

输入格式

第一行包含一个整数 $n$($2 \leq n \leq 200\,000$),表示序列的长度。 第二行包含 $n$ 个互不相同的非负整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 10^9$),表示序列中的元素。

输出格式

输出一个整数,表示最少需要删除多少个元素,才能使剩下的序列是“好”序列。

说明/提示

注意,被删除的数字不会影响判断剩下的序列是否为“好”序列。 对于某些 $b_i$ 和 $b_j$,可能会尝试两次在它们之间连边,但实际上只连一次。 由 ChatGPT 4.1 翻译