#z1082. 精灵球重组计划

精灵球重组计划

题目描述

小T 是精灵训练师,负责管理编号为 1 到 N 的精灵球。由于之前的混乱配对,现在每个精灵球中可能有多个精灵或没有精灵。每个精灵 i 初始位于精灵球 a[i] 中,并且具有亲密值 w[i]。

小T 可以进行以下操作:

1、将任意一个精灵从当前所在的精灵球移动到其他任意一个精灵球

2、每次移动需要消耗等同于该精灵亲密值的能量

目标是通过最少的总能量消耗,使得最终每个精灵球中恰好包含一个精灵(不需要考虑具体是哪个精灵)。

输入格式

第一行包含一个正整数 N,表示精灵球和精灵的数量。

第二行包含 N 个正整数 a[1], a[2], ..., a[N],其中 a[i] 表示精灵 i 初始所在的精灵球编号。

第三行包含 N 个正整数 w[1], w[2], ..., w[N],其中 w[i] 表示精灵 i 的亲密值。

输出格式

输出一个整数,表示使每个精灵球恰好包含一个精灵所需的最小总能量消耗。

输入输出样例

输入样例 #1

5
2 2 3 3 5
33 40 2 12 16

输出样例 #1

35

输入样例 #2

12
3 6 7 4 12 4 8 11 11 1 8 11
3925 9785 9752 3587 4013 1117 3937 7045 6437 6208 3391 6309

输出样例 #2

17254

样例解释 #1

初始状态:

精灵球 2:精灵 1(33)、精灵 2(40)

精灵球 3:精灵 3(2)、精灵 4(12)

精灵球 5:精灵 5(16)

最优方案:

将精灵 1(33)从精灵球 2 移动到精灵球 1

将精灵 3(2)从精灵球 3 移动到精灵球 4

总消耗:33 + 2 = 35

注意:题目要求的是每个精灵球恰好一个精灵,不要求具体是哪个精灵,因此可以更灵活地安排。

说明/提示

数据范围

对于 20% 的测试数据,N ≤ 10;

对于 100% 的测试数据,1 ≤ N ≤ 10^5,1 ≤ a[i] ≤ N,1 ≤ w[i] ≤ 10^6;

输入保证所有数均为正整数。