AT_joi2018ho_a.ストーブ (Stove)

普及-

通过率:0%

AC君温馨提醒

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

题目描述

JOI 君的房间里有一个取暖炉。由于 JOI 君本身不怕冷,所以当他一个人在房间时不需要开取暖炉,但有客人来访时就必须开取暖炉。

这一天,JOI 君将有 NN 位客人来访。第 ii 位客人(1≤i≤N1 \leq i \leq N)会在时刻 TiT_i 到达,并在时刻 Ti+1T_i + 1 离开。不会有多位客人在同一时刻到达。

JOI 君可以在任意时刻开关取暖炉。但每次开取暖炉都需要消耗一根火柴。JOI 君只有 KK 根火柴,因此最多只能开 KK 次取暖炉。一天开始时,取暖炉是关闭的。

由于取暖炉开启时会消耗燃料,JOI 君希望合理安排取暖炉的开关时机,使得取暖炉开启的总时间最小。

输入格式

从标准输入读取以下内容。

  • 第 11 行包含两个整数 N,KN, K,表示 JOI 君的房间有 NN 位客人来访,JOI 君有 KK 根火柴。
  • 接下来的 NN 行中,第 ii 行(1≤i≤N1 \leq i \leq N)包含一个整数 TiT_i,表示第 ii 位客人在时刻 TiT_i 到达,并在时刻 Ti+1T_i + 1 离开。

输出格式

输出一个整数,表示取暖炉开启的总时间的最小值。

输入输出样例

  • 输入#1

    3 2
    1
    3
    6

    输出#1

    4
  • 输入#2

    3 1
    1
    2
    6

    输出#2

    6
  • 输入#3

    3 3
    1
    3
    6

    输出#3

    3
  • 输入#4

    10 5
    1
    2
    5
    6
    8
    11
    13
    15
    16
    20

    输出#4

    12

说明/提示

任务

给定 JOI 君房间的来客信息和 JOI 君拥有的火柴数量,求取暖炉开启的总时间的最小值。

限制

所有输入数据满足以下条件。

  • 1≤N≤100 0001 \leq N \leq 100\,000。
  • 1≤K≤N1 \leq K \leq N。
  • 1≤Ti≤1 000 000 0001 \leq T_i \leq 1\,000\,000\,000(1≤i≤N1 \leq i \leq N)。
  • Ti<Ti+1T_i < T_{i+1}(1≤i≤N−11 \leq i \leq N-1)。

子任务

子任务 1 [20 分]

满足以下条件。

  • N≤20N \leq 20。
  • 1≤Ti≤201 \leq T_i \leq 20(1≤i≤N1 \leq i \leq N)。

子任务 2 [30 分]

  • N≤5 000N \leq 5\,000。

子任务 3 [50 分]

  • 无额外限制。

样例解释 1

在本输入样例中,JOI 君的房间有 33 位客人来访。如下安排取暖炉的开关:

  • 在第 11 位客人到达的时刻 11 开启取暖炉。
  • 在第 22 位客人离开的时刻 44 关闭取暖炉。
  • 在第 33 位客人到达的时刻 66 再次开启取暖炉。
  • 在第 33 位客人离开的时刻 77 关闭取暖炉。

这样,取暖炉开启的总时间为 (4−1)+(7−6)=4(4-1)+(7-6)=4,且开启次数为 22 次。无法使开启总时间小于 44,因此输出 44。

样例解释 2

在本输入样例中,JOI 君只能开启一次取暖炉,因此可以在第 11 位客人到达的时刻 11 开启取暖炉,在第 33 位客人离开的时刻 77 关闭取暖炉。

需要注意的是,可能存在某位客人离开的时刻与下一位客人到达的时刻相同。

样例解释 3

在本输入样例中,JOI 君可以在每位客人到达时开启取暖炉,在每位客人离开时关闭取暖炉。

由 ChatGPT 4.1 翻译

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

首页