#P1198. 变换

变换

题目描述

游园会有有一个项目叫做变换,这个项目的规则如下:

现在有 SSTT 两个长度相同的序列,都是由 0011 构成。

我们想要把 SS 序列变成 TT 序列,每次变换我们可以把一个 00 变成 11,或者把一个 11 变成 00,第 ii 个数改变一次所需要的代价是 Ci×DCi \times DCiCi 是题目给出的,跟位置 ii 有关,即我们变换第 ii 个数的时候使用,DD 是当前 SSTT 里面不匹配的数字的数量。

显然,不同的变换顺序的代价是不一样的。我们希望求出这个最小的变换代价。

输入格式

输入的第一行是一个整数 nn,表示序列的长度。

接下来一行有一个长度为 nn 的序列,表示 SS 序列,中间有一个空格隔开。

接下来一行有一个长度为 nn 的序列,表示 TT 序列,中间有一个空格隔开。

接下来一行有 nn 个整数,表示 CiCi,整数用一个空格隔开。

输出格式

输出最小的变换代价。

样例输入 #1

3
1 0 1
1 0 1
1 2 3

样例输出 #1

0

样例输入 #2

3
1 0 1
0 1 0
1 2 3

样例输出 #2

10

数据范围

####【输入输出样例 11 说明】

这里 SSTT 是完全一样的,所以不需要变换,最小的变化代价是 00

####【输入输出样例 22 说明】 这里我们先变换第 11 个数, 花费的代价是 C1×3=3C_1 \times 3 = 3, 此时还有 33 个数没有匹配好, 所以乘 以 33, 然后我们变换第 22 个数, 花费的代价是 C2×2=4C_2 \times 2 = 4, 此时还有 22 个数没有匹配好, 所以乘 以 22, 然后我们变换第 33 个数, 花费的代价是 C3×1=3C_3 \times 1 = 3, 此时只有 11 个数没有匹配好, 所以乘 以 11, 总的代价 1010, 为最小代价。

如果我们换种顺序去变换, 比如我们先变换第 33 个, 再变换第 22 个, 最后变换第 11 个, 那么花 费的代价就是 C3×3+C2×2+C1×1=14C_3 \times 3 + C_2 \times 2 + C_1 \times 1 = 14

####【数据范围】

对于所有的数据: 1n100000,1Ci100001 ≤ n ≤ 100000, 1 ≤ C_i ≤ 10000

数据编号 数据范围 特殊性质
131 \sim 3 n10n ≤ 10 保证 SSTT 最多只有一个数不同
474\sim 7 n2000n ≤ 2000 1Ci1001 ≤ C_i ≤ 100
8108\sim 10 n10000n ≤ 10000