m
,第 i
个咒语先扣 a_i
,若此时 m-a_i<=0
则失败;若存活,再加 b_i
,即 m ← m - a_i + b_i
。贪心策略(经典“阈值+收益”排序):
把咒语分成两类:
a_i <= b_i
(净不亏或增益)。魔法学院的某学员有一天早上准备起床的时候,突然发现有人在他的被子上施加了 n 道昏睡魔法,被子上每道魔法施加完毕后该学员都会减少 ai 点清醒值,而该学员每一次面对魔法都会进行抵抗,使自己的清醒值增加 bi (只有当被子施法完成后才增加),初始时该学员的清醒值为 m 。
而该学员作为魔法学院的学生也不是吃素的,他有一道魔法可以指定被子的施法顺序,但因为他有点紧张所以很难冷静思考,你能帮忙看看是否该学员可以挣脱被子的昏睡魔法吗?
如果被子的昏睡魔法以某种顺序施法时,若存在某一次施法后该学员的清醒值 ≤0 ,则认为该学员挣脱失败。
第一行一个整数 T(1≤T≤10) ,表示数据组数。
对于每一组数据,第一行两个整数 n 和 m(1≤n,m≤105) ,分别表示被子上被施加的昏睡魔法次数和学员的初始清醒值。
接下来 n 行每行两个整数 ai 和 bi(0≤ai,bi≤105) ,分别表示本次昏睡魔法减少的清醒值和学员抵抗后增加的清醒值。
(请注意,每一行 ai 和 bi 互相绑定,不可调换,但是施法的顺序可以调换)
对于每一组数据,如果学员能逃脱,输出 YES ,反之输出 NO 。
输入
2
2 5
3 2
4 5
2 5
3 2
4 2
输出
Yes
No
说明
输入 2 组数据
第一组数据,施加 2 道魔法,初始清醒值为 5
假设先抵抗第一道魔法:5−3+2=4,抵抗第二道魔法时 4−4≤=0,
假设先抵抗第二道魔法:5−4+5=6,抵抗第一道魔法时 6−3+2≤=5,
所以先抵抗第二道魔法,可以挣脱。
第二组数据,施加 2 道魔法,初始清醒值为 5
假设先抵抗第一道魔法:5−3+2=4 ,抵抗第二道魔法时 4−4≤=0,
假设先抵抗第二道魔法:5−4+2=3 ,抵抗第一道魔法时 3−3≤=0 ,
所以无论施加的魔法是哪个顺序,都会在两道魔法施加完毕后清醒值归零,从而挣脱失败。