给我们一个包含n个正整数的数组a1,a2,…,an,可以对这个数组执行一次以下操作:选择该数组的一个子段,并将其循环旋转任意次。
请注意,该操作只可以执行一次。我们可以对该操作进一步描述如下:
(1)取两个整数l和r,满足1≤l≤r≤n,以及一个任意正整数k。
(2)重复下列操作k次:al=al+1, al+1=al+2,…,ar - 1=ar, ar=al(所有更改同时发生)。
请问,执行上述操作后,我们可以得到的an-a1的最大值是多少?
给我们一个包含n个正整数的数组a1,a2,…,an,可以对这个数组执行一次以下操作:选择该数组的一个子段,并将其循环旋转任意次。
请注意,该操作只可以执行一次。我们可以对该操作进一步描述如下:
(1)取两个整数l和r,满足1≤l≤r≤n,以及一个任意正整数k。
(2)重复下列操作k次:al=al+1, al+1=al+2,…,ar - 1=ar, ar=al(所有更改同时发生)。
请问,执行上述操作后,我们可以得到的an-a1的最大值是多少?
第一行一个整数t(1≤t≤50):测试用例数;
每个测试用例两行:
第一行一个整数n(1≤n≤2000):n为数组的长度;
第二行为n个整数a1,a2,a3,……,ai,……,an(1≤ai≤999):数组a的n个元素;
输入数据确保,所有测试样例的n之和不超过2000;5 6 1 3 9 11 5 7 1 20 3 9 99 999 4 2 1 8 1 3 2 1 5
10 0 990 7 4
在第一个测试用例中,我们可以选择l=3,r=6,k=2; 即对子段[9,11,5,7]循环旋转2次,这样就可以实现以下变换:[1,3,9,11,5,7]⟶[1,3,5,7,9,11],此时:a6-a1=11-1=10,我们无法再找到比它更大的差值了。