题目描述
织金县位于贵州省毕节市,素有“中国竹荪之乡”的美誉,这里出产的红托竹荪(织金竹荪)被誉为“雪裙仙子”“真菌皇后”。1983年,织金科技人员从野生竹荪菌蕾中成功分离出菌种,开启了人工栽培的历程,如今竹荪已成为织金年综合产值超18亿元的富民支柱产业。
菌农在菌床上分段培育竹荪菌丝。菌农每次能任选一段连续的菌床,让这些菌床的菌丝量各自翻倍。但菌床的承载量有限,超出上限的菌丝会立刻凋亡。每段菌床都有各自的目标菌丝量。菌农想知道,最少要操作多少次,才能让各段菌床都达到目标。
形式化地,设有 $n$ 段菌床,其当前菌丝量依次为 $a_1, a_2, \ldots, a_n$,目标菌丝量依次为 $b_1, b_2, \ldots, b_n$,每段菌床的承载量上限为 $M$。
一次操作中,可选择两个整数 $l$ 和 $r$ ($1 \le l \le r \le n$)。对每个 $i$ ($l \le i \le r$),将第 $i$ 段菌床的菌丝量由 $a_i$ 改为 $\min(2 \cdot a_i, M)$。
求使序列 $a$ 变为序列 $b$ 所需的最少操作次数;若不可能,输出 $-1$。
输入格式
每个测试文件包含多组测试数据。第一行包含测试数据的组数 $T$ ($1 \le T \le 10^4$)。每组测试数据的格式如下。
每组测试数据的第一行包含两个整数 $n$ 和 $M$ ($1 \le n \le 2 \cdot 10^5$, $1 \le M \le 10^9$)。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$ ($0 \le a_i \le M$),表示各段菌床当前的菌丝量。
第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$ ($0 \le b_i \le M$),表示各段菌床的目标菌丝量。
保证所有测试数据的 $n$ 之和不超过 $2 \cdot 10^5$。
输出格式
对于每组测试数据,输出使序列 $a$ 变为序列 $b$ 所需的最少操作次数;若不可能,输出一个整数 $-1$。
样例输入 1
2
5 10
1 3 0 6 2
4 10 0 10 8
3 12
3 4 0
12 10 0
样例输出 1
2
-1
样例解释
第一组测试数据中,对区间 $[1, 5]$ 操作两次,菌丝量依次变为 $[2, 6, 0, 10, 4]$、$[4, 10, 0, 10, 8]$,正好达到目标菌丝量。
第二组测试数据中,第 $2$ 段菌床的菌丝量经过任意次操作只能是 $4$、$8$ 或 $12$,永远无法变成 $10$。