#HK5481. 「UOI 2016 Stage 4 Day1」机器人

「UOI 2016 Stage 4 Day1」机器人

题目描述

题目译自 Ukrainian Olympiads in Informatics 2016 Stage 4 Day2 T1. Робот

在奥林匹亚国,今天是个节日!

奥林匹克大街上唯一的邮局堆满了礼物,需要尽快送达收件人。今天总共收到了 NN 件礼物,其中第 ii 件需要送到编号为 hih_i 的房子。多件不同的礼物可能会被寄往同一栋房子。

邮局位于奥林匹克大街的起点。从邮局向右,沿着一条笔直的道路排列着房屋,编号从 11 开始;第 ii 栋房子距离邮局 ii 公里。为了配送,实验性地使用了一台特殊的邮政机器人,它一次最多能装载 KK 件物品。装载或卸下一件礼物需要一分钟,两件礼物不能同时装载或卸载。机器人行驶一公里也需要一分钟。

请编写一个名为 robot 的程序,根据每件礼物的信息和机器人的特性,确定机器人能够将所有礼物送达收件人并返回邮局所需的最短时间(以分钟为单位)。起初,所有礼物和机器人都在邮局。

输入格式

输入文件的第一行包含两个整数 NNKK (1N105,1K103)(1 \leq N \leq 10^5, 1 \leq K \leq 10^3),分别是邮局收到的礼物数量,以及机器人一次能装载的最大物品数量。

第二行包含 NN 个用空格分隔的整数:第 ii 个数等于 hih_i (1hi106)(1 \leq h_i \leq 10^6),需要将第 i 件礼物送达的房屋编号。保证具有指定编号的房屋确实位于奥林匹克大街上。

输出格式

输出文件的唯一一行应包含一个整数——机器人能够将礼物送达收件人并返回邮局所需的最短时间(以分钟为单位)。

7 3
3 9 3 2 1 1 3

40

我们将礼物从 11 编号到 77。那么,一种最优的配送方案如下:

  • 22 分钟:装载第 55 和第 66 件礼物(都需要送到 11 号房),
  • 11 分钟:机器人从邮局移动到 11 号房,
  • 22 分钟:卸下第 55 和第 66 件礼物,
  • 11 分钟:机器人从 11 号房返回邮局,
  • 22 分钟:装载第 22 和第 77 件礼物(第 22 件礼物需送到 99 号房,第 77 件礼物需送到 33 号房),
  • 99 分钟:机器人从邮局移动到 99 号房,
  • 11 分钟:卸下第 22 件礼物,
  • 66 分钟:机器人从 99 号房移动到 33 号房,
  • 11 分钟:卸下第 77 件礼物,
  • 33 分钟:机器人从 33 号房返回邮局,
  • 33 分钟:装载第 113344 件礼物(第 11 和第 33 件礼物需送到 33 号房,第 44 件礼物需送到 22 号房),
  • 22 分钟:机器人移动到 22 号房,
  • 11 分钟:卸下第 44 件礼物,
  • 11 分钟:机器人从 22 号房移动到 33 号房,
  • 22 分钟:卸下第 11 和第 33 件礼物,
  • 3 分钟:机器人从 33 号房返回邮局。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 2525 $1 \leq N \leq 10, 1 \leq K \leq 5, 1 \leq h_i \leq 10^2$
22 2525 $1 \leq N \leq 10^3, 1 \leq K \leq 10^2, 1 \leq h_i \leq 10^4$
33 2525 1N1051 \leq N \leq 10^5; 1K103,1hi1041 \leq K \leq 10^3, 1 \leq h_i \leq 10^4
44 2525 $1 \leq N \leq 10^5, 1 \leq K \leq 10^3, 1 \leq h_i \leq 10^6$