AT_arc229_b [ARC229B] Halving Subtraction

题目描述

给定一个长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\dots,A_N)$。 你可以对 $A$ 进行如下操作,次数不限(也可以不进行操作): - 选择一个正整数 $x_0$,令 $x=x_0$。然后按顺序对于 $i=1,2,\ldots,N$,进行如下操作: - 将 $x$ 从 $A_i$ 中减去,并将 $x$ 替换为 $x := \left\lfloor \frac{x}{2} \right\rfloor$。 判断是否有可能通过若干此类操作,使序列 $A$ 的所有元素都变为 $0$;如果可以,求使所有元素变为 $0$ 的最少操作次数。 给定 $T$ 组测试数据,请分别解决每组测试。

输入格式

输入从标准输入读入,格式如下: $T$ $\text{case}_1$ $\text{case}_2$ $\vdots$ $\text{case}_T$ 每组测试数据的格式如下: $N\ A_1\ A_2\ \ldots\ A_N$

输出格式

按顺序输出每组测试数据的答案,每组一行。 对于每组测试数据,如果可以使所有 $A$ 元素都变为 $0$,输出所需的最少操作次数;如果无法达成,输出 $-1$。

说明/提示

### 样例解释 1 以第一组测试数据为例: 通过如下两次操作,可以使所有 $A$ 元素变为 $0$: - 选择 $x_0=3$。此时 $A=(10,4)$ 变为 $A=(7,3)$。 - 选择 $x_0=7$。此时 $A=(7,3)$ 变为 $A=(0,0)$。 无法使用更少次数的操作使 $A$ 全为 $0$,因此第一行输出 $2$。 ### 数据范围 - $1\le T\le 10^4$ - $1\le N\le 30$ - $0\le A_i\le 10^9$ - 所有输入均为整数。 由 ChatGPT 5 翻译