CF2097E.Clearing the Snowdrift

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

男孩 Vasya 非常喜欢旅行。特别是乘坐飞机旅行给他带来了极大的快乐。他正要飞往另一个城市,但跑道被厚厚的积雪覆盖,需要清理。

跑道可以表示为编号从 11 到 nn 的 nn 个连续区域。暴风雪相当猛烈,但现在已经停止,因此 Vasya 计算出第 ii 个区域覆盖了 aia_i 米厚的积雪。针对这种情况,机场有一台工作方式相当特殊的扫雪机。每分钟,扫雪机可以执行以下操作:

  • 选择一个长度不超过 dd 的连续区段,并从积雪最多的区域中移除一米积雪。具体来说,可以选择 1≤l≤r≤n1 \le l \le r \le n(r−l+1≤dr - l + 1 \le d)。然后计算 c=max⁡{al,al+1,…,ar}c = \max \{ a_l, a_{l + 1}, \ldots , a_r \},如果 c>0c > 0,则对于所有满足 ai=ca_i = c 的 i ⁣:l≤i≤ri \colon l \le i \le r,将 aia_i 的值减一。

Vasya 为这次飞行准备了很长时间,他想知道自己还需要等待多少时间才能让所有区域完全清除积雪。换句话说,需要计算扫雪机将所有区域的积雪清除(即对所有 ii 从 11 到 nn 满足 ai=0a_i = 0)所需的最少分钟数。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤2⋅1051 \le t \le 2 \cdot 10^5)。接下来是各测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 dd(1≤n≤5⋅105,1≤d≤n1 \le n \le 5 \cdot 10^5, 1 \le d \le n)——跑道的区域数量和扫雪机可以选择的区段的最大长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \le a_i \le 10^9),其中 aia_i 表示第 ii 个区域的积雪厚度。

保证所有测试用例的 nn 之和不超过 5⋅1055 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数——扫雪机将所有区域的积雪清除所需的最少分钟数。

输入输出样例

  • 输入#1

    2
    5 2
    1 5 2 1 2
    3 1
    1000000000 1000000000 1000000000

    输出#1

    8
    3000000000

说明/提示

在第一个测试用例中,存在一个最优的操作序列。首先,选择区段 [2,3][2, 3] 四次。经过三次操作后,a2a_2 将变为 22,数组 aa 将变为 [1,2,2,1,2][1, 2, 2, 1, 2]。第四次操作后,数组 aa 将变为 [1,1,1,1,2][1, 1, 1, 1, 2]。接下来,可以通过依次选择区段 [1,2][1, 2]、[3,3][3, 3]、[5,5][5, 5] 和 [4,5][4, 5] 将数组清零。

在第二个测试用例中,d=1d = 1,这意味着每个区域需要独立清除,答案等于所有 aia_i 的总和。

翻译由 DeepSeek V3 完成

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

首页