传送门
考虑关于
a
a
a的差分数组
d
d
d,操作一相当于给某一个
d
d
d值加上
k
k
k,操作二相当于给某一个
d
d
d值减去
k
k
k,我们发现最终一定要让
d
d
d值都为
0
0
0,于是我们让负的
d
d
d做操作一,正的
d
d
d做操作二,由于操作一会导致
a
1
a_1
a1的减少,我们关注操作一的总贡献,假设其为
s
u
m
sum
sum,比较
s
u
m
sum
sum和
a
1
a_1
a1的大小即可。若
s
u
m
<
a
1
sum<a_1
sum<a1说明
a
1
a_1
a1最终会被减少为负数,输出
N
O
NO
NO即可,否则输出
Y
E
S
YES
YES。
int a[maxn];
int main(){
int t=rd();
while(t--){
int n=rd();
FOR(i,1,n+1){
a[i]=rd();
}
ROF(i,n,1)a[i]-=a[i-1];
ll sum=0;
FOR(i,1,n+1){
if(a[i]<0)sum-=a[i];
}
if(a[1]>=sum)wrsn("YES");else wrsn("NO");
}
}