问题 4913 --虎哥玩数列

4913: 虎哥玩数列

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

题目描述

给定n个整数a1,a2,...an组成的一个数列,同时再给定一个正整数x.
设f(k)为在数列a中选取k个不同位置,并对每个位置上的元素加上x后的连续子序列之和。设空数列的和值为0。
请注意,求和的子序列不必包含所有增加x后的元素。
请计算f(0),f(1)...f(n)的最大值

输入

第一行为T(1<=T<=5000),表示有T组测试数据。
每组测试数据包括2行,第一行为两个整数n,x(1<=n<=5000;0<=x<=100000),表示数列元素的个数和加上的数值;第二行为n个整数ai(-100000<=ai<=100000)
测试数据确保所有的n之和不超过5000。

输出

每组测试数据占一行,每行输出n+1个整数,分别表示f(0),f(1)...f(n)的最大值
样例输入
Copy
3
4 2
4 1 3 2
3 5
-2 -7 -1
10 2
-6 -1 -2 4 -6 -1 -4 4 -5 -4
样例输出
Copy
10 12 14 16 18
0 4 4 5
4 6 6 7 7 7 7 8 8 8 8

提示

第一组测试数据,最大连续子序列的和值为整个数列所有数字之和,因此f(k)的值取整个序列之和+k*x。即f(0)的值取整个数列所有数字之和10;f(1)的值取整个数列所有数字之和10再加上某个元素增加的x值2,得12;同理,f(2)=10+2*2=14;f(3)=10+2*3=16;f(4)=10+2*4=18。

第二组测试数据
   k=0, 最佳答案取空序列,因此f(0)=0
   k=1, 最佳答案取第3个元素-1,因此f(1)=-1+5=4
   k=2,  最佳答案仍取第3个元素-1,因此f(2)=-1+5=4
   k=3,  最佳答案取所有元素,因此f(3)=(−2+5)+(−7+5)+(−1+5)=5  

来源

 

[提交][状态]