问题 6393 --短信发送

6393: 短信发送★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 31  解决: 16
[提交][状态][命题人:]

题目描述

大家都知道,张博士交际广泛,为了更好的与人交流,张博士每天都需要发送大量的短信。今天又是忙碌的一天,张博士需要在时刻m1,m2,…mn (mi<mi+1)共发送n条消息。很不幸的是,张博士昨天晚上忘记给手机充电了,在0时刻,张博士的手机只剩下f个单位的电量,此时手机是开机状态。

张博士的手机每开机一个单位的时间就会损失a个单位的电量。而且,在任何时候,张博士都可以关闭手机,稍后可以再打开手机(显然,在关机时间内,手机是不会耗电的)。但是,每次关机再开机会消耗b个单位的电量。另外,我们认为开机、关机是即时的,不会消耗时间,即你可以在x时刻打开手机并同时发送消息,反之亦然,在x时刻发送消息并同时关闭手机。

在任意一个时刻,如果手机的电量变为0(即手机电量<=0),则无法发送信息。

     张博士想知道,他是否可以在不给手机充电的情况下完成所有短信的发送?请聪明的你编程帮他完成吧。

输入

      第一行包含一个整数t(1≤t≤1e4)——测试用例的数量。

每个测试用例两行:

第一行共四个整数:n, f, a, b (1≤n≤2e5, 1≤f, a, b≤1e9), n为所需要发送的短信数量,f为初始手机电量,a为开机一个单位时间所消耗的电量,b为关机再开机所消耗的电量。

第二行为n个整数:m1,m2…mn (1≤mi≤1e9, mi<mi+1),mi为发送第i条短信的时刻,即张博士需要在mi时刻发送第i条短信。

测试数据确保所有测试用例的n之和不超过2e5

输出

       输出共t行,每个测试用例一行一个字符串“YES”或者“NO”。如果张博士可以在手机电量耗尽之前发送完所有短信,则输出:YES,否则输出:NO
样例输入
Copy
6
1 3 1 5
3
7 21 1 3
4 6 10 13 17 20 26
5 10 1 2
1 2 3 4 5
1 1000000000 1000000000 1000000000
1000000000
3 11 9 6
6 8 10
12 621526648 2585904 3566299
51789 61859 71998 73401 247675 298086 606959 663464 735972 806043 806459 919683
样例输出
Copy
NO
YES
YES
NO
NO
YES

提示

在第一个测试样例中,n=1f=3a=1b=5,只需要在时刻3发送一条短信。显然,按照题意,在时刻0手机共有3个单位的电量。如果一直保持开机状态,则在时刻3手机剩余电量为:f-(3-0)=3-(3-0)=0,此时无法发送短信。如果选择在时刻0关机,在时刻3再开机,此时电量为:f-b=3-5=-2<=0,则仍然无法发送短信。因此,张博士无法完成所有短信的发送任务。

在第二个测试样例中,n=7,f=21,a=1,b=3,共需要发送7条短信。可以这样规划:

在时刻0关机,时刻4开机,发送第一条短信,剩余电量为:21-3=18

然后一直开机到时刻6,发送第二条短信并立即关机,剩余电量为:18-(6-4)=16

在时刻10再开机,发送第3条短信,剩余电量为:16-3=13

然后一直开机到时刻13,发送第4条短信并关机,剩余电量为:13-(13-10)=10

再在时刻17开机,发送第5条短信,剩余电量为:10-3=7

然后一直开机到时刻20,发送第6条短信后关机,剩余电量为:7-(20-17)=4

最后,在时刻26开机,消耗3个电量,此时剩余电量为4-3=1,发送第7条短信

来源

 

[提交][状态]