#P2209. 跳跃(jump)
跳跃(jump)
【题目描述】
𝐶rying 在梦里也希望和 𝑀io 贴贴,但是 𝑀io 不理她,所以她一个人在梦里玩跳房子。(好奇怪)
游戏场地是一个一行 n 个格子的序列 𝑎,每个格子都各自有一个权值ai,第 i 个格子的权值为 𝑎𝑖,注意 𝑎𝑖 可能非正。
𝐶rying一开始站在 1 处,并且面向右侧。然后她会进行 𝑘 次跳跃。每次跳跃,𝐶rying可以向她的方向跳任意步(也可以不跳),然后转身(也就是说,如果她向右跳,那么下次跳跃应该向左;反之,应该向右)。设她开始在第 𝑥个格子,跳跃到了第 y 个格子,则 𝐶rying 的得分累加上第 𝑥 个格子到第y个格子之间的所有格子的权值之和(包括第 𝑥 个格子和第 y 个格子)。注意在整个 𝑘 次跳跃过程中,𝐶rying不能跳出序列 𝑎。
一开始 𝐶rying 的得分为 0,任意时刻,𝐶rying的权值都必须是非负的。
试求出至多𝑘次跳跃(可能为0)后,𝐶rying可以得到的最大的得分。
【输入格式】
第一行一个正整数 𝑇,表示数据组数。
对于每一组数据,第一行两个整数 n,𝑘,分别代表格子长度,和 𝐶rying 的最多跳跃次数。
接下来一行 n 个整数,依次代表 𝑎1 ,𝑎2 , … ,𝑎𝑛 。
【输出格式】
对于每一组数据,一行一个整数,代表 𝐶rying 进行至多 𝑘 次跳跃后,能得到的最大分数。
【样例1 输入】
2
3 4
10 -100 80
15 400000000
-100 1 2 3 4 5 6 7 8 9 10 11 12 13 14
【样例1 输出】
90
41999999900
【样例1 说明】
第一次跳跃:向右跳。注意到若从 1 跳到 2,则得分变为 0 + (10) + (−100) =−90,为负,不符合题意,同理不能从 1 跳到 3,所以只能从 1 跳 0 步,还是待在 1,分数变为 0 + (10) = 100 + (10) = 10。
第二次跳跃:向左跳。发现 1 的左边没有格子了,所以还是只能待在 1,分数变为 10 + (10) = 20。
第三次跳跃:向右跳。从 1 直接跳到 3,分数变为 20 + (10) + (−100) + (80) = 10。
第四次跳跃:向左跳。从 3 跳到 3(原地不动),分数变为 10 + (80) = 90。
容易发现,90 就是 𝐶rying 进行至多 4 次跳跃可以获得的最大得分。
【数据范围】
对于 20% 的数据,n,𝑘 ≤10
对于 50% 的数据,n,𝑘 ≤1000
对于 100% 的数据,1≤ 𝑇 ≤ 10,0 ≤∣𝑎𝑖∣≤10^5, 1 ≤ n ≤1000,0 ≤ 𝑘 ≤10^9
相关
在下列比赛中: