CF1005C Summarize to the Power of Two
题目描述
如果一个序列 $a_1, a_2, \dots, a_n$ 满足:对于每一个元素 $a_i$,都存在另一个元素 $a_j$($i \ne j$),使得 $a_i + a_j$ 是 $2$ 的幂(即 $2^d$,其中 $d$ 为非负整数),则称该序列是“好”的。
例如,以下序列是“好”的:
- $[5, 3, 11]$(例如,对于 $a_1=5$,可以选择 $a_2=3$,它们的和是 $2$ 的幂。同理,对于 $a_2$ 和 $a_3$ 也可以找到满足条件的元素);
- $[1, 1, 1, 1023]$;
- $[7, 39, 89, 25, 89]$;
- $[]$。
注意,根据定义,空序列(长度为 $0$)也是“好”的。
以下序列不是“好”的:
- $[16]$(对于 $a_1=16$,无法找到另一个元素 $a_j$ 使得它们的和是 $2$ 的幂);
- $[4, 16]$(对于 $a_1=4$,无法找到另一个元素 $a_j$ 使得它们的和是 $2$ 的幂);
- $[1, 3, 2, 8, 8, 8]$(对于 $a_3=2$,无法找到另一个元素 $a_j$ 使得它们的和是 $2$ 的幂)。
给定一个序列 $a_1, a_2, \dots, a_n$,你需要删除最少数量的元素,使得剩下的序列是“好”的。你可以删除任意多个元素。
输入格式
第一行包含一个整数 $n$($1 \le n \le 120000$),表示给定序列的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$)。
输出格式
输出最少需要删除多少个元素,才能使给定序列变为“好”的。你可以选择删除全部 $n$ 个元素,使其变为空序列,此时也是“好”的。
说明/提示
在第一个样例中,只需删除一个元素 $a_4=5$,剩下的序列 $[4, 7, 1, 4, 9]$ 就是“好”的。
由 ChatGPT 4.1 翻译