(翻译存在误差)
输入 (t个实例)
n(消息数),f(总电量),a(开机时每时刻消耗电量),b(每次开关机消耗电量)
(n个数据:每条消息发送的时刻)
输出
关机之前可以发送全部消息—yes
否则—no
主要是考虑每两条消息中间的时间段 是a方案(一直开机)耗电少 还是 b方案(关机再开机)时间少。
需要根据最后的提示注意溢出问题。
根据所给实例分析可知开关机方案不需要考虑那一时刻的耗电。
//正确答案
#include<bits/stdc++.h>
using namespace std;
long long a[200010];
int main()
{
int t;
cin >> t;
while(t --)
{
int m = 0;
int flag = 1;
long long n, sum, x, y;//n, f, a, b
cin >> n >> sum >> x >> y;
for(int i = 1; i <= n; i ++)
cin >> a[i];
a[0] = 0;
for(int i = 0; i < n; i ++)
{
long long sum1 = (a[i+1]-a[i])*x;
long long sum2 = y;
sum -= min(sum1, sum2);
if(sum <= 0)
{
printf("NO\n");
flag = 0;
break;
}
}
if(flag) printf("YES\n");
}
return 0;
}