本题与「三联调液」描述的计算任务一致。按输入格式读入数据后,沿用原题解的算法即可。
核心思路
设当前权重序列为 w1,w2,…,wn。
一次操作会在连续三个位置上分别增加
实验台上有 n 个试剂瓶排成一列,编号从 1 到 n。第 i 个瓶子的液面读数为整数 wi,读数可以为负,表示该瓶当前欠量。
可以进行任意次(含零次)如下操作:选择一个长度为 3 的连续区间 [i,i+2](其中 1≤i≤n−2),再任选一个实数 x(可正、可负、可为零),将三个瓶子的读数分别变为 wi−x,wi+1+2x,wi+2−x。
目标是使所有瓶子的读数均为非负数,即对所有 1≤i≤n 均有 wi≥0。判断给定初始读数是否可能达成该目标。
约束:测试数据组数不超过 104。每组数据中瓶子数量不少于 3、不超过 2×105。每个读数的绝对值不超过 109。单个测试文件中所有瓶子数量之和不超过 2×105。
第一行输入一个整数 T(1≤T≤104),表示测试数据组数。 对于每组测试数据: 第一行输入一个整数 n(3≤n≤2×105),表示试剂瓶数量。 第二行输入 n 个整数 w1,w2,…,wn(−109≤wi≤109),表示各个瓶子的初始液面读数。 保证单个测试文件中所有 n 之和不超过 2×105。
对于每组测试数据,输出一行:若能够通过若干次操作使所有瓶子的读数均为非负数,输出 YES;否则输出 NO。
输入
1
3
-1 2 -1
输出
YES
说明
按题意模拟计算得到。
输入
1
3
-1 2 -1
4
输出
YES
说明
按题意模拟计算得到。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.