我们需要判断:是否存在一个长度为 n 的非负整数序列 a1,a2,…,an,满足
该问题可以转化为:在给定 n,m,k 的条件下,求出 波动值的最大可能值 maxV。
给定一个长度为 n 的非负整数序列 a1,a2,…,an,其元素总和为 m,即 ∑i=1nai=m。
定义该序列的波动值为相邻元素之差的绝对值之和:
V(a)=i=1∑n−1∣ai−ai+1∣.同时,如果 aieqai+1,我们称位置 i 为一个变化点。变化点的总数即 #{i∈[1,n−1]∣aieqai+1}。
现在有 q 次独立询问,每次询问给定两个整数 k 和 g,请判断是否存在一个满足以下所有条件的序列 a:
如果存在,回答 YES,否则回答 NO。
数据范围
第一行包含一个整数 t,表示测试用例的数量。 对于每个测试用例:
对于每个询问,输出一行字符串,若存在满足条件的序列则输出 YES,否则输出 NO。
输入
1
4 6 4
1 6
2 12
2 13
0 0
输出
YES
YES
NO
NO
说明
该测试用例中 n=4,m=6,共有 4 个询问。
1 6:变化点上限 k=1,此时最大波动值为 m=6,要求的 g=6 可以达到,输出 YES。2 12:变化点上限 k=2,因为 n≥3 且 k≥2,最大波动值为 2m=2×6=12,g=12 可以达到,输出 YES。2 13:同样最大波动值为 12,但 g=13>12,无法达到,输出 NO。0 0:变化点上限 k=0 要求所有元素相等,但 m=6 无法被 n=4 整除,因此不存在合法序列,即使 g=0 也不可行,输出 NO。输入
1
1 5 2
0 0
0 1
输出
YES
NO
说明
该测试用例中 n=1,m=5,共有 2 个询问。序列长度为 1,没有相邻元素,因此波动值恒为 0,变化点数量恒为 0。
0 0:k=0 时存在合法序列,且最大波动值 0 满足 0≥0,输出 YES。0 1:最大波动值 0<1,无法满足要求,输出 NO。输入
1
2 10 3
1 10
1 11
0 0
输出
YES
NO
YES
说明
该测试用例中 n=2,m=10,共有 3 个询问。由于只有 2 个元素,最多存在 1 个变化点。
1 10:k=1 时最大波动值为 m=10,g=10 可以达到,输出 YES。1 11:最大波动值为 10,g=11>10,无法达到,输出 NO。0 0:k=0 要求两个元素相等,此时 m=10 能被 n=2 整除,存在序列 [5,5],波动值为 0,g=0 可以满足,输出 YES。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册