CF1923B Monsters Attack!
题目描述
你正在玩一款电脑游戏。本关卡可以被建模为一条直线。你的角色位于这条直线的 $0$ 点。有 $n$ 只怪物试图杀死你的角色,第 $i$ 只怪物的生命值为 $a_i$,初始位置在 $x_i$ 点。
每一秒,发生以下事件:
- 首先,你可以向怪物们最多发射 $k$ 发子弹。每颗子弹只能攻击一只怪物,并使其生命值减少 $1$。对于每颗子弹,你可以任意选择目标(例如,你可以把所有子弹都射向同一只怪物,也可以分别射向不同的怪物,或选择其他任意组合)。无论怪物的位置如何,任何怪物都可以被子弹攻击;
- 然后,所有生命值小于等于 $0$ 的怪物死亡;
- 然后,所有存活的怪物向你靠近 $1$ 个单位(你左边的怪物坐标加 $1$,你右边的怪物坐标减 $1$)。如果有任何怪物到达你的角色所在的 $0$ 点,你就输了。
你能否在不让任何怪物到达你的角色之前,消灭所有 $n$ 只怪物?
输入格式
输入的第一行包含一个整数 $t$($1 \le t \le 3 \cdot 10^4$),表示测试用例的数量。
每个测试用例包含三行:
- 第一行包含两个整数 $n$ 和 $k$($1 \le n \le 3 \cdot 10^5$;$1 \le k \le 2 \cdot 10^9$);
- 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$);
- 第三行包含 $n$ 个整数 $x_1, x_2, \dots, x_n$($-n \le x_1 < x_2 < x_3 < \dots < x_n \le n$;$x_i \ne 0$)。
额外输入限制:所有测试用例中 $n$ 的总和不超过 $3 \cdot 10^5$。
输出格式
对于每个测试用例,如果你能在所有怪物到达你的角色之前消灭它们,输出 YES,否则输出 NO。
你可以用任意大小写输出答案。例如,yEs、yes、Yes 和 YES 都会被识别为肯定回答。
说明/提示
在第一个样例中,你可以这样操作:
- 第 $1$ 秒,向第 $1$ 只怪物射 $1$ 发子弹,向第 $3$ 只怪物射 $1$ 发子弹。此时第 $1$ 只怪物死亡,第 $2$ 只和第 $3$ 只怪物向你靠近;
- 第 $2$ 秒,向第 $2$ 只怪物射 $2$ 发子弹。此时第 $2$ 只怪物死亡,第 $3$ 只怪物向你靠近;
- 第 $3$ 秒,向第 $3$ 只怪物射 $2$ 发子弹。此时第 $3$ 只怪物死亡。
在第二个样例中,你每秒只能射 $1$ 发子弹,所以第一秒只能杀死两只怪物中的一只。剩下的怪物会向你靠近并杀死你的角色。
由 ChatGPT 4.1 翻译