#HK5356. 「OOI 2025 Day 1」可爱的子序列

「OOI 2025 Day 1」可爱的子序列

题目描述

题目译自 Open Olympiad in Informatics 2025 Day1 T4 「Милые подпоследовательности / Cute Subsequences

给定一个包含 nn 个正整数的数组 a1,a2,,ana_1, a_2, \ldots, a_n,以及一个正整数 kk。你需要将这个数组分成 kk 个非空的子序列,使得数组中的每个元素恰好属于一个子序列。子序列是指通过从原序列中删除某些元素(不改变剩余元素的顺序)所得到的序列。

假设第 ii 个子序列包含编号为 j1<<jlj_1 < \ldots < j_l 的元素。该子序列的价值定义为对所有 mm(从 11ll)取 ajm+ma_{j_m} + m 的最大值。

将数组分成 kk 个子序列的成本定义为这 kk 个子序列价值的总和。

请找出最大的成本

输入格式

第一行包含两个正整数 nnkk (1kn500000)(1 \leq k \leq n \leq 500000),分别表示数组的大小和需要分成的子序列数量。

第二行包含 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n (1ai109)(1 \leq a_i \leq 10^{9}),表示数组的元素。

输出格式

输出一个整数,即将给定数组分成 kk 个非空子序列的最大成本

5 3
3 7 10 1 2

24

在样例中,数组可以分成 [3,10][3, 10][7][7][1,2][1, 2]。此时,答案为 (10+2)+(7+1)+(2+2)=12+8+4=24(10 + 2) + (7 + 1) + (2 + 2) = 12 + 8 + 4 = 24

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制 子任务依赖 备注
11 1414 n8n \leq 8 00
22 1919 k=2k = 2
33 1717 ai+1aia_{i+1} \leq a_i
44 2121 ai+1ai1a_{i+1} \geq a_i - 1
55 1515 n1000n \leq 1000 0,10, 1
66 1414 050 \sim 5