CF2114G Build an Array
题目描述
昨天,Dima 发现了一个空数组,并决定向数组中添加一些整数,他可以进行无限次下述操作:
- 向数组的左端或右端添加任意一个整数。
- 添加之后,只要数组中有一对相邻的数相同,它们就会被替换为它们的和。
可以证明数组中不会同时出现两对相邻的数相同。
例如,如果当前数组是 $[3,6,4]$,我们添加 $3$ 至数组的左端,则数组将首先变为 $[3,3,6,4]$,随后左端的两个 $3$ 将会被替换为 $6$,即数组变为 $[6,6,4]$,然后进一步变为 $[12,4]$。
在进行了恰好 $k$ 次操作后,他认为自己得到了一个长度为 $n$ 的数组 $a$。然而,他不记得自己都进行了哪些操作。请判定数组 $a$ 是否能由一组 $k$ 次操作序列得到。
输入格式
输入数据包含多个测试用例,第一行包含一个整数 $t$($1 \le t \le 10^4$)——测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le n \le 10^5$,$n \le k \le 10^6$)——最终数组的长度和操作的次数。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$,$a_{i-1} \neq a_i$)——最终数组的元素。
输入数据保证所有测试用例中的 $n$ 之和不超过 $10^5$。
输出格式
对于每个测试用例,如果不能通过 $k$ 次操作得到相应的数组,输出一行 `NO`,否则输出一行 `YES`。
你可以以任意大小写输出 `NO` 或者 `YES`。例如,`yEs`,`yes`,`Yes`,`YES` 都会被视为肯定回答。