DP技能
时间限制:1秒 内存限制:256M
【题目描述】
YS校的信竞队有 \(N\) 名学生,为突破他们的DP算法能力,H教练让他们排成一行(依次编号为 \(1..N\)),学生 \(i\) 的DP技能水平为 \(a_i\)。她们的技能水平可能参差不齐,所以H教练决定把她们分成若干小组。每一组可以包含任意不超过 \(K\) 名的连续的学生,并且一名学生不能属于多于一个小组。由于小组内会互相学习,所以同一组中每一名学生的DP技能水平会变成这一组中水平最高的学生的技能水平。
请帮助H教练算一算,在他合理地安排分组的情况下,所有学生可以达到的DP技能水平之和的最大值。
【输入格式】
输入的第一行包含 \(N\) 和 \(K\)。以下 \(N\) 行按照 \(N\) 名学生的排列顺序依次给出她们的DP技能水平。技能水平是一个不超过 100000 的正整数。
【输出格式】
输出一个整数,表示可以达到的最大DP技能水平之和。
【输入输出样例】
Input
7 3
1
15
7
9
2
5
10
Output
84
【样例说明】
在这个样例中,最优的方案是将前三名学生和后三名学生分别分为一组,中间的学生单独成为一组。则7名学生的技能水平提高至 15、15、15、9、10、10、10,和为 84。
【数据限制】
- 对于 20% 的数据,有 \(N≤10\)
- 对于 70% 的数据,有 \(N≤5000\)
- 对于 100% 的数据,有 \(N≤10000,K≤300\)
【来源】
Mr.he