luogu#P11114. [ROI 2024 Day 1] 小推车

[ROI 2024 Day 1] 小推车

题目背景

翻译自 ROI 2024 D1T3

航空公司提供了一种新型的商务舱,飞机上的座位沿着过道排列。假设座位总数为 nn,座位的坐标从 11nn

每个乘客都有一个饮料偏好,饮料的种类共有 kk 种,编号从 11kk。每个乘客只能选择一种饮料。在飞机上,饮料需要从一辆小推车上分给乘客。

饮料装在一个瓶子里,每个瓶子的饮料可以服务 pp 个乘客。也就是说,一个瓶子的容量为 pp。小推车最多可以装载 mm 个瓶子。保证 kmk\le m

小推车从座位前方的起点(坐标为 00)开始移动,并最终到达终点(坐标为 n+1n + 1)。在小推车服务乘客的过程中,它可能需要去往储藏室中装载新的饮料。储藏室可能位于飞机前部的起点处,也可能位于后部的终点处,也有可能两侧都有。

如果小推车在座位 ii 的位置,它需要移动到起点处的储藏室的距离是 ii,而到达终点处的储藏室的距离是 n+1in + 1 - i。小推车在行进过程中可能需要补充饮料,如果小推车到达储藏室,它可以卸下空的瓶子,并装载新的饮料。不可以卸下还装有饮料的瓶子。在补充饮料后,小推车应该回到第一个未提供饮料的乘客的位置,再继续向后为乘客提供服务。

题目描述

你需要计算小推车从 00 移动到 n+1n + 1 的最小总移动距离,以便为所有乘客提供所需的饮料。

输入格式

第一行包含四个整数 nnmmkkpp,分别表示座位数量、小推车所装瓶子的容量、饮料种类数量和每个瓶子所装饮料的容量。

第二行包含一个整数 cc,表示储藏室的位置,cc 的取值范围是 1133c=1c=1 表示储藏室只在终点位置;c=2c=2 表示储藏室只在起点位置;c=3c=3 表示储藏室在起点和终点都有。

第三行包含 nn 个整数 aia_i,表示第 ii 个座位的乘客需要的饮料的类型。

输出格式

输出一个整数,表示小推车在服务所有乘客的过程中所需的最小移动距离。

5 2 2 1
1
1 2 1 2 1
14
8 3 2 2
2
1 1 1 1 1 2 2 2
17
8 3 3 2
3
1 2 2 3 2 3 2 1
15
8 6 6 2
2
1 2 3 4 3 5 6 1
9
7 3 3 1
3
1 2 3 2 2 1 3
16

提示

在第一个样例中,小推车可以装载 m=2m = 2 个瓶子,每瓶含 p=1p = 1 份饮料。储藏室位于客舱的尽头。

  • 首先,小推车需要装上饮料 1122,这些饮料将分发给座位 1122 的乘客,小推车需要行驶 22 的距离从起点 00 到点 22,即 d1=2d_1=2
  • 接着,小推车需要前往客舱尽头的储藏室(距离为 44),装上饮料 1122,然后返回到座位 33(小推车需要移动 33 的距离)。d2=4+3=7d_2=4+3=7
  • 然后,小推车要为座位 3344 的乘客提供饮料 1122(小推车在座位 3344 之间移动 11 的距离)。d3=1d_3=1
  • 最后,小推车需要再次前往储藏室(从座位 44 到储藏室的距离为 22),装上饮料 11,从储藏室返回到座位 55(距离为 11),服务完该乘客后再移动 11 的距离到客舱尽头。d4=2+1+1=4d_4=2+1+1=4

总距离为 d1+d2+d3+d4=2+7+1+4=14d_1+d_2+d_3+d_4=2+7+1+4=14

在第二个样例中,小推车可以装载 m=3m = 3 个瓶子,每瓶含 p=2p = 2 份饮料。储藏室位于客舱的前端。小推车需要装满 33 瓶饮料 11,服务座位 1144 的乘客。之后,22 瓶饮料 11 将被用完,需要立刻前往储藏室装满 22 瓶饮料 22,然后服务座位 5588 的乘客(如果在服务完乘客 55 后再回储藏室补充饮料,则要移动更长的距离)。

在第三个样例中,小推车可以装载 m=3m = 3 个瓶子,每瓶含 p=2p = 2 份饮料,储藏室分别位于客舱的两端。为了服务乘客,需要 22 瓶饮料 22,以及饮料 113311 瓶,因此需要去储藏室更换空瓶。最好的方案是在服务完座位 33 的乘客后,再去客舱前端的储藏室换取饮料 22

在第四个样例中,小推车需要装载每种饮料各 11 瓶,并且由于每瓶含 22 份饮料,这样可以在不额外补充的情况下服务所有乘客。

在第五个样例中,需要进行两次补充,小推车在服务完乘客 33 后需要第一次返回客舱开头的储藏室,第二次则是在服务完乘客 66 后去到客舱尽头的储藏室。

原题目有十二个子任务,由于洛谷限制这里不能全部上传。

对于 100%100\% 的数据,$3\le n\le 10^6,1\le p\le 10^6,1\le a_i\le k\le m\le 10^6,1\le c\le3$。