CF1796D.Maximum Subarray

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array a1,a2,…,ana_1, a_2, \dots, a_n, consisting of nn integers. You are also given two integers kk and xx.

You have to perform the following operation exactly once: add xx to the elements on exactly kk distinct positions, and subtract xx from all the others.

For example, if a=[2,−1,2,3]a = [2, -1, 2, 3], k=1k = 1, x=2x = 2, and we have picked the first element, then after the operation the array a=[4,−3,0,1]a = [4, -3, 0, 1].

Let f(a)f(a) be the maximum possible sum of a subarray of aa. The subarray of aa is a contiguous part of the array aa, i. e. the array ai,ai+1,…,aja_i, a_{i + 1}, \dots, a_j for some 1≤i≤j≤n1 \le i \le j \le n. An empty subarray should also be considered, it has sum 00.

Let the array a′a' be the array aa after applying the aforementioned operation. Apply the operation in such a way that f(a′)f(a') is the maximum possible, and print the maximum possible value of f(a′)f(a').

给你一个包含 nn 个整数的数组 a1,a2,…,ana_1, a_2, \dots, a_n,以及两个整数 kk 和 xx。

你必须恰好执行一次如下操作:在恰好 kk 个互不相同的位置上的元素加上 xx,而对其余所有位置上的元素减去 xx。

例如,若 a=[2,−1,2,3]a = [2, -1, 2, 3],k=1k = 1,x=2x = 2,且我们选择了第一个元素,则操作后数组变为 a=[4,−3,0,1]a = [4, -3, 0, 1]。

令 f(a)f(a) 表示数组 aa 的子数组最大和。这里子数组指 aa 的一个连续部分,即形如 ai,ai+1,…,aja_i, a_{i + 1}, \dots, a_j 的数组(其中 1≤i≤j≤n1 \le i \le j \le n)。空子数组也需考虑,其和为 00。

令 a′a' 表示对 aa 执行上述操作后得到的数组。请以使得 f(a′)f(a') 尽可能大的方式执行该操作,并输出 f(a′)f(a') 的最大可能值。

输入格式

The first line contains a single integer tt (1≤t≤1041 \le t \le 10^4) — the number of test cases.

The first line of each test case contains three integers nn, kk and xx (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5; 0≤k≤min⁡(20,n)0 \le k \le \min(20, n); −109≤x≤109-10^9 \le x \le 10^9).

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (−109≤ai≤109-10^9 \le a_i \le 10^9).

The sum of nn over all test cases doesn't exceed 2⋅1052 \cdot 10^5.

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)—— 测试用例的数量。

每个测试用例的第一行包含三个整数 nn、kk 和 xx(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5;0≤k≤min⁡(20,n)0 \le k \le \min(20, n);−109≤x≤109-10^9 \le x \le 10^9)。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(−109≤ai≤109-10^9 \le a_i \le 10^9)。

所有测试用例的 nn 值之和不超过 2⋅1052 \cdot 10^5。

输出格式

For each test case, print one integer — the maximum possible value of f(a′)f(a').

对于每个测试用例,输出一个整数——f(a′)f(a') 的最大可能值。

输入输出样例

  • 输入#1

    4
    4 1 2
    2 -1 2 3
    2 2 3
    -1 2
    3 0 5
    3 2 4
    6 2 -8
    4 -1 9 -3 7 -8

    输出#1

    5
    7
    0
    44

输入解题思路,AI测评打分。不知道怎么写?

首页