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