-->
当前位置:首页 > 题库

编程题:贪心算法+单调队列优化

Luz4年前 (2022-09-05)题库396
马蒂亚需要粉刷他的旧栅栏。围栏由N块木板制成,每块木板宽1厘米,高度不一。为了方便快捷地完成这项工作,他给自己买了一台超级油漆滚筒豪华版。油漆辊宽X厘米。不过,Super Paint Roller豪华版有一个缺点。

Matija必须始终接触辊子全宽的木板,否则油漆会滴到四周,并污染所有东西。此外,压路机必须始终与地面平行,以防止泄漏。这意味着为了让Matija安全地使用压路机,他需要选择X个长条,然后一下子从最底层木板的底部到顶部进行喷漆。然后,他选择了一些其他的X板,绘制它们等等。

这使得一些木板的部分没有上漆。Matija必须用牙刷刷这些部件。这显然是相当乏味的,所以他请你帮助他尽可能多地使用超级油漆辊。因为有不止一种方法可以做到这一点,他也对这幅画感兴趣,它需要最少的俯冲次数。

### 输入格式:
第一行输入包含两个整数N(1≤N≤1000),木板数量和X(1≤N≤100000),超级油漆辊的宽度。超级油漆辊的宽度不会超过围栏的宽度。

第二行输入包含N个正整数,小于1000000,表示围栏中木板的高度。

### 输出格式:
输出的第一行应该包含Matija必须手动绘制的最小区域。

第二行输出应该包含所需的最少数量的俯冲。

### 得分:
如果只有一个输出数字是正确的,您将获得该测试用例50%的分数。您必须始终严格遵循输出格式,即使您没有同时计算两个数字。在这种情况下,您可以输出任何整数来代替未计算的数字。

### 输入样例1:
in
5 3
5 3 4 4 5


### 输出样例1:
out
3
2


### 输入样例2:
in
10 3
3 3 3 3 3 3 3 3 3 3


### 输出样例2:
out
0
4


### 输入样例3:
in
7 4
1 2 3 4 3 2 1


### 输出样例3:
out
4
4


示例1说明:
马蒂亚需要用他的滚筒进行两次俯冲——一次将木板1、2和3刷到3厘米的高度,另一次将木板3、4和5刷到4厘米的高度。

请注意,3 cm2(木板1上2 cm2,木板5上1 cm2)未上漆。另外,木板3上3 cm2的区域被涂了两遍,但这没关系。






答案:若无答案欢迎评论