#P16695. [ICPC 2017 Jakarta R]Parks of Jakarta
[ICPC 2017 Jakarta R]Parks of Jakarta
题目描述
雅加达有三个公园,分别称为公园 、公园 和公园 。
雅加达的新任州长希望通过摆放砖块来装饰这些公园。砖块会在三个公园中分别堆成若干堆。
共有 块砖,编号为 到 。编号为 的砖比编号为 的砖小。
不能把较大的砖放在较小的砖上。因此,编号为 的砖可以放在编号为 的砖上,当且仅当:
定义一种砖块状态为:将全部砖块分配到三个公园中,并满足:
- 每个公园中至多有一摞砖;
- 每摞砖都符合上述大小顺序。
例如,当 时,一种合法状态是:
- 公园 中,砖块 在砖块 上方;
- 公园 中没有砖;
- 公园 中放置砖块 。
可以通过一次操作把一种状态变成另一种状态。一次操作如下:
- 选择两个不同的公园 和 ;
- 取出公园 最上方的砖块,并放到公园 的最上方。
若公园 中没有砖,则该操作非法。
若移动后公园 中的砖块顺序不合法,则该操作同样非法。
把一块砖从公园 运到公园 需要支付 单位费用。运输费用可能不对称,即:
不一定等于
初始时,砖块处于某个给定的初始状态。
州长希望依次观察若干指定状态。你可以自行决定访问这些指定状态的顺序,但每一个指定状态都必须至少出现一次。
完成这些要求后,还必须把所有砖块集中到任意一个公园中。
请计算满足全部要求所需的最小总费用。
更形式化地,给定州长要求访问的状态:
需要构造状态序列:
使得:
- 是初始状态;
- 对每个 ,至少存在一个下标 ,满足 ;
- 中全部砖块位于同一个公园;
- 对每个 ,可以通过一次合法操作从 变为 ;
- 总费用最小。
指定状态的访问顺序不受输入顺序限制。
输入格式
第一行包含两个整数 :
分别表示砖块数量和州长要求访问的状态数量。
接下来三行,每行包含三个整数。第 行的第 个整数为 ,表示从公园 向公园 搬运一块砖的费用。
满足:
并且:
随后用三行描述初始状态。第 行的格式为:
K b1 b2 ... bK
表示公园 中有 块砖,从上到下依次为:
当 时,该行只包含一个 0。
保证:
每一摞砖的编号严格递增,并且 到 的每块砖在三个公园中恰好出现一次。
接下来依次描述 个州长要求访问的状态。每个状态同样由三行组成,格式与初始状态完全相同。
输出格式
输出一个整数,表示满足全部要求所需的最小总费用。
样例 1
输入
3 0
0 1 1000
1 0 1
1000 1 0
2 1 2
0
1 3
输出
5
样例 2
输入
3 2
0 2 2
2 0 2
2 2 0
2 1 2
1 3
0
3 1 2 3
0
0
0
0
3 1 2 3
输出
22