CF1654C Alice and the Cake
题目描述
Alice 有一个蛋糕,她准备将其切分。她将进行如下操作 $n-1$ 次:选择一个重量为 $w \ge 2$ 的蛋糕块,将其切分成两个更小的蛋糕块,重量分别为 $\lfloor\frac{w}{2}\rfloor$ 和 $\lceil\frac{w}{2}\rceil$($\lfloor x \rfloor$ 和 $\lceil x \rceil$ 分别表示[向下取整函数](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions)和向上取整函数)。
在将蛋糕切成 $n$ 块后,她会将这 $n$ 块蛋糕以任意顺序排成一行。设 $a_i$ 为排在第 $i$ 位的蛋糕块的重量。
现在给定数组 $a$,请判断是否存在某个初始蛋糕重量和一系列切分操作,使得最终得到的蛋糕块重量为 $a$。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$)。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$)。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一行:如果数组 $a$ 可能由 Alice 的操作得到,输出 YES,否则输出 NO。
你可以用任意大小写输出答案(例如 YES, Yes, yes, yEs 都会被识别为正解)。
说明/提示
在第一个测试用例中,可以对重量为 $327$ 的蛋糕执行 $0$ 次操作得到数组 $a$。
在第二个测试用例中,不可能得到数组 $a$。
在第三个测试用例中,可以对重量为 $1\,970\,429\,473$ 的蛋糕执行 $1$ 次操作:
- 将其切成两半,得到重量为 $[985\,214\,736, 985\,214\,737]$。
注意,初始蛋糕的重量可以大于 $10^9$。
在第四个测试用例中,可以对重量为 $6$ 的蛋糕执行 $2$ 次操作:
- 第一次切成两半,得到 $[3,3]$。
- 再将其中一个重量为 $3$ 的蛋糕块切分,得到 $[1, 2, 3]$,与 $[2, 3, 1]$ 仅顺序不同。
由 ChatGPT 4.1 翻译