题解
题面描述
在本题中,场上共有n个怪物,第i个怪物的血量为ai。你拥有m点法力,并且有无限张两种牌:
- 磨刀:使用时消耗1点法力。操作分两步:
- 使得所有怪物受到伤害时的倍率翻倍(倍率可叠加),即全局倍率由原来的D变为2D;
- 随后选择一个此前未被磨刀选中过的怪物,对其造成1点基础伤害,最后实际伤害为1×2D。
- 刀扇:使用时消耗2点法力,对所有怪物造成1点基础伤害,最后实际伤害为1×D。
题目内容
轮到你的回合了!你有这样两张牌,可以对怪物打出:
- 磨刀:需要消耗1点法力,随后使得所有怪物受到的伤害翻倍(倍率叠加);随后,再选择一个此前未被磨刀选中的怪物,对该怪物造成1点伤害(未计算倍率),对于每个怪物只能使用一次。
- 刀扇:需要消耗2点法力,对所有怪物造成1点伤害(未计算倍率).
你是一个优秀的牌手,遇到困难总是可以想到很好的解决办法,那么现在问题来了,本回合中,有n个怪物,第i个怪物都有自己的血量ai,而你拥有m 点法力和无限张刀扇牌和无限张磨刀牌,优秀的牌手总是会精打细算的使用每一张牌,以此消灭所有的怪物。
当怪物的血量小于等于0时,则认为该怪物被消灭。你需要判断,在法力值不能低于0的情况下,是否存在一种使用牌的顺序,使得你可以消灭所有的怪物。
输入描述
每个测试文件均包含多组测试数据。第一行输入一个整数
T(1≦T≦104)代表数据组数,每组测试数据描述如下:
第一行输入两个整数n,m(1≦n≦105;1≦m≦109) 代表怪物的数量和你的法力值。
第二行输入n个整数a1,a2,...,an(1≦ai≦109) 代表每一个怪物的血量。
除此之外,保证单个测试文件的n之和不超过3×105。
输出描述
对于每一组测试数据,新起一行。如果可以消灭所有的怪物,输出YES,否则输出 NO。
样例1
输入
2
4 4
4 6 8 4
4 2
1 2 1 1
输出
YES
NO
说明
对于第一组测试数据,操作如下:
- 先使用一次【磨刀】,并选择第3个怪物造成2点伤害;此时场上剩余的怪物血量为{4,6,6,4};
- 再使用一次【磨刀】,并选择第3个怪物造成4点伤害,此时场上剩余的怪物血量为{4,4,2,4};
- 使用一次【刀扇】,对全部怪物造成4点伤害,此时场上剩余的怪物血量为{0,0,−2,0},怪物全部被消灭。