Cắt dãy

Xem dạng PDF

Gửi bài giải

Điểm: 0,10 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho hai dãy ~a~ và ~b~ có cùng độ dài ~n~ và một số nguyên ~k~. Ta sẽ cắt dãy ~a~ ra thành ~k~ đoạn con liên tiếp sao cho mỗi đoạn con có độ dài tối thiểu là ~1~ và mọi phần tử của dãy ~a~ đều thuộc ~1~ trong ~k~ đoạn con này. Làm điều tương tự với dãy ~b~.

Gọi ~s_1, s_2, \cdots, s_k~ là tổng các phần tử của từng đoạn con của ~a~ và ~t_1, t_2, \cdots, t_k~ là tổng các phần tử của từng đoạn con của ~b~. Hãy tìm cách cắt dãy ~a~ và ~b~ sao cho biểu thức sau được cực đại hóa:

$$\sum_{j = 1}^{k} |s_j - t_j|$$

Input

Input sẽ được đưa ra theo format sau:

n k
a[1] a[2] a[3] ... a[n]
b[1] b[2] b[3] ... b[n]

Output

Gồm một số nguyên dương duy nhất, là đáp án cho bài toán trên.

Scoring

  • Subtask 1 (~30\%~): ~2 \leq k, n \leq 12~.

  • Subtask 2 (~20\%~): ~2 \leq n \leq 5*10^3~ và ~k = 2~.

  • Subtask 3 (~50\%~): ~2 \leq n \leq 5 * 10^3~ và ~2 \leq k \leq 10~.

Sample Input 1

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

Sample Output 1

61

Notes

Ta tách hai dãy ~a, b~ như sau:

- ~a = [2, 4, -5, 3, 9, 1], [-2, -7], [10]~.

- ~b = [-2, -3], [1, 0, 3, 8], [-9, 2, -4]~.

Khi đó, giá trị của mảng ~s, t~ là:

- ~s = [14, -9, 10]~.

- ~t = [-5, 12, -11]~.

Đáp án cuối cùng là ~|14 - (-5)| + |(-9) - 12| + |10 - (-11)| = 61~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.