AT_pakencamp_2025_day3_h OR Preference

题目描述

**请注意,内存限制较为特殊。** 请针对 $T$ 组测试用例解答下列问题。 给定一个长度为 $N$ 的整数序列 $A = (A_0, A_1, \dots, A_{N-1})$。 你可以反复进行如下操作之一,直到数组长度变为 1: - $\mathrm{AND}$ 操作:选择相邻的两个元素 $(a, b)$,将其合并为一个元素,新元素为 $a\,\&\,b$。 - $\mathrm{OR}$ 操作:选择相邻的两个元素 $(a, b)$,将其合并为一个元素,新元素为 $a\,|\,b$。 最终数组只剩下一个元素时,该元素必须等于 $0$。 在满足上述条件的所有操作序列中,请求出“$\mathrm{OR}$ 操作”进行的最大次数。 如果不存在满足条件的操作序列,则输出 $-1$。

输入格式

输入通过标准输入给出。第 $1$ 行格式如下: > $T$ 接下来有 $T$ 行,每行为一个测试用例,格式如下: > $N\ A_{1}\ A_{2}\ \cdots\ A_{N}$

输出格式

请输出 $T$ 行。第 $i$ 行输出第 $i$ 个测试用例中最多可以执行的 $\mathrm{OR}$ 操作次数。

说明/提示

### 部分得分 本题的得分依据以下规则确定: - 若所有输入用例都通过,得满分。 - 否则,对 $m = 1,2 \ldots 12$ 可按如下规则获得部分分: - 如果你通过了所有“满足每个测试用例的 $N$ 总和不超过 $2^m$ 且 $A_i < 2^m$ 的所有用例”,则可额外获得 $m$ 分。 - 例如,通过所有 $N$ 总和不超 $2^4 (=16)$ 且 $A_i