#HK5081. 「POI2019 R2」星辰 Stars

「POI2019 R2」星辰 Stars

题目描述

题目译自 XXVI Olimpiada Informatyczna – II etap Gwiazdy

在一个几何完美的银河系中,nn 颗星辰沿直线排列,从左至右编号为 11nn。星际旅行极为便捷,因大部分居民拥有瞬移装置,可瞬间从任意星辰跳转至另一星辰。

Bajtalina 居住在编号为 ss 的星辰,她刚购置了一台瞬移装置,计划通过 n1n-1 次瞬移,恰好访问每颗星辰一次(星辰 ss 视为已访问)。她希望以最小的能量消耗完成旅程,因装置电池充电成本高昂。

然而,能量消耗依瞬移方向(向左至编号较小的星辰,或向右至编号较大的星辰)及已完成的瞬移次数而变化无常。Bajtalina 在装置说明书中查到能量消耗规则:第 ii (1in1)(1 \leq i \leq n-1) 次瞬移的成本为 lil_i(向左)或 rir_i(向右)。

你的任务是帮助 Bajtalina 找到最节能的访问路径。

输入格式

第一行包含两个整数 n,sn, s (n2,1sn)(n \geq 2, 1 \leq s \leq n),分别表示星辰数量和 Bajtalina 居住的星辰编号。

接下来的 n1n-1 行描述瞬移成本,第 ii 行包含两个整数 li,ril_i, r_i (0li,ri106)(0 \leq l_i, r_i \leq 10^6),表示第 ii 次瞬移向左或向右的成本。

输出格式

第一行输出一个整数,表示完成所有瞬移的最小总成本。

第二行输出 nn 个互不相同的整数(范围 [1,n][1, n]),表示星辰的访问顺序(首数必须为 ss)。若存在多种最优路径,可输出任意一种。

4 2
5 3
4 6
2 2

9
2 4 1 3

Bajtalina 从编号 22 的星辰开始。第一次瞬移向右(至星辰 44),成本 r1=3r_1=3。第二次瞬移向左(至星辰 11),成本 l2=4l_2=4。最后一次瞬移至星辰 33,成本 r3=2r_3=2(因 l3=r3l_3=r_3,方向无关)。

总成本为 3+4+2=93+4+2=9,为最优解。

附加样例

  1. n=10,s=1n=10, s=1li=1,ri=2l_i=1, r_i=2(对所有 ii)。
  2. n=18,s=7n=18, s=7,奇数 iili=i,ri=i+1l_i=i, r_i=i+1;偶数 iili=i+1,ri=il_i=i+1, r_i=i
  3. n=500,s=250n=500, s=250,奇数 iili=0,ri=1l_i=0, r_i=1;偶数 iili=1,ri=0l_i=1, r_i=0
  4. n=3000,s=1000n=3000, s=1000li=ri=il_i=r_i=i(对所有 ii)。
  5. n=500000,s=1n=500000, s=1li=i,ri=500000il_i=i, r_i=500000-i(对所有 ii)。

数据范围与提示

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

对于子任务 1,2,3,4,5,7,81,2,3,4,5,7,8,若仅总成本正确,获得 50%50\% 的分数。

子任务 附加限制 分值
11 n10n \leq 10 88
22 n18n \leq 18 88
33 n500n \leq 500 1010
44 n3000n \leq 3000 1616
55 n500000n \leq 500000liril_i \leq r_i(对所有 ii 1010
66 n500000n \leq 500000,最优成本为 00,每 ii 恰有一个 li,ril_i, r_i00 1010
77 n500000,s=1n \leq 500000, s=1 1818
88 n500000n \leq 500000 2020