【题目背景】
风眼的位置确定后,Ehundategh 驾船抵达风暴中心。紊乱的气流在海面上形成了一道环形空洞,通向核心的入口正悬在空洞中央。
入口外侧的环锁仍在不停旋转。锁面上的每个符号都与一处封锁结构相连,只有按照残存记录给出的顺序逐一解除,入口才会停止排斥靠近的船只。
【题目描述】
环锁上有 n 个控制位,围成一个首尾相接的圆环。每个控制位最初刻有一个 1∼n 的符号,并且每个符号恰好出现一次。
环锁始终指定其中一个位置为当前控制位。从当前控制位开始沿顺时针方向读到的符号依次构成排列 a。另一份长度为 n 的排列 b 记录了符号的解除顺序,其中 b1 表示下一次必须解除的符号。
你可以进行任意次下列操作:
- 将排列 a 循环左移一位。若操作前 a1=0,需要花费 x。
- 将排列 a 循环右移一位。若操作前 a1=0,需要花费 y。
- 交换 x,y,需要花费 z。
- 若 a1=b1,将排列 b 循环左移一位,同时令 a1=0,不花费代价。
循环左移会将 a1,a2,…,an 变为 a2,a3,…,an,a1。循环右移会将其变为 an,a1,a2,…,an−1。
旋转操作的代价由操作前的 a1 决定。已经变为 0 的位置不会消失,仍会与其他位置一起旋转。交换 x,y 后,之后的旋转操作按照交换后的数值计算,直到再次交换。
请你求出使排列 a 中所有元素均变为 0 的最小代价。
【输入格式】
从文件 circle.in 中读入数据。
本题包含多组测试数据。
输入的第一行包含两个非负整数 c,T,分别表示测试点编号与测试数据的组数。c=0 表示该测试点为样例。
对于每组测试数据:
第一行包含四个正整数 n,x,y,z。
第二行包含 n 个整数,表示排列 a。
第三行包含 n 个整数,表示排列 b。
【输出格式】
输出到文件 circle.out 中。
对于每组测试数据输出一行一个整数,表示解除环锁所需的最小代价。
【样例 1 输入】
10 423 1 2 531 2 341 2 353 1 2 561 2 373 2 184 3 5 292 4 1 3104 1 3 2115 2 7 4124 1 5 2 3132 5 1 4 3
【样例 1 输出】
【说明/提示】
【样例 1 解释】
第一组测试数据中,初始时可以免费解除符号 1。此后每次循环左移前,当前控制位都已经被解除,因此剩余符号也可以依次免费解除,答案为 0。
【样例 2】
见选手目录下的 circle/circle2.in 和 circle/circle2.ans。
该组样例符合测试点 1∼5 的数据范围。
【样例 3】
见选手目录下的 circle/circle3.in 和 circle/circle3.ans。
该组样例符合测试点 6∼10 的数据范围。
【样例 4】
见选手目录下的 circle/circle4.in 和 circle/circle4.ans。
该组样例符合测试点 11∼19 的数据范围。
【样例 5】
见选手目录下的 circle/circle5.in 和 circle/circle5.ans。
该组样例符合测试点 20∼25 的数据范围。
【数据范围】
对于 100% 的数据,保证 1≤T≤20,1≤n≤106,单个测试点内 ∑n≤106,排列 a,b 均由 1∼n 恰好各出现一次构成,1≤x,y,z≤106。
特殊性质:保证 x=y=z。