#2612. 变换(慈溪2020第2题)

变换(慈溪2020第2题)

Description

       现在有 S 和 T 两个长度相同的序列,都是由 0 和 1 构成。
       我们想要把 S 序列变成 T 序列,每次变换我们可以把一个 0 变成 1,或者把一个 1 变成 0,第 i 个数改变一次所需要的代价是 C i ×D,C i 是题目给出的,跟位置 i有关,即我们变换第 i 个数的时候使用,D 是当前 S 和 T 里面不匹配的数字的数量。
       显然,不同的变换顺序的代价是不一样的。我们希望求出这个最小的变换代价。

Input Format

change.in 输入的第一行是一个整数 n,表示序列的长度。
接下来一行有一个长度为 n 的序列,表示 S 序列,中间有一个空格隔开。
接下来一行有一个长度为 n 的序列,表示 T 序列,中间有一个空格隔开。
接下来一行有 n 个整数,表示 C i ,整数用一个空格隔开。

Output Format

change.out 输出最小的变换代价。
3
1 0 1
1 0 1
1 2 3
0

Hint

【输入样例 1】
3
1 0 1
1 0 1
1 2 3
【输出样例 1】
0
【样例1解释】
这里 S 和 T 是完全一样的,所以不需要变换,最小的变换代价是 0。
【输入样例 2】
3
1 0 1
0 1 0
1 2 3
【输出样例 2】
10
【样例2解释】
    这里我们先变换第 1 个数,花费的代价是 C 1 ×3 = 3,此时还有 3 个数没有匹配好,所以乘以 3,然后我们变换第 2 个数,花费的代价是 C 2 × 2 = 4,此时还有 2 个数没有匹配好,所以乘以 2,然后我们变换第 3 个数,花费的代价是 C 3 × 1 = 3,此时只有 1 个数没有匹配好,所以乘以 1,总的代价 10,为最小代价。
    如果我们换种顺序去变换,比如我们先变换第 3 个,再变换第 2 个,最后变换第1 个,那么花费的代价就是 C 3 × 3 + C 2 × 2 + C 1 × 1 = 14。
【输入样例 3】
10
0 0 1 0 1 0 0 0 0 0
0 1 1 1 1 0 0 1 1 0
72 38 91 18 10 40 90 8 22 21
【输出样例 2】
168
【数据范围】
对于所有的数据:1 ≤ n ≤ 100000,1 ≤ C i ≤ 10000。

Source

贪心