A27806.彩球排序
普及+/提高
通过率:0%
时间限制:3.00s
内存限制:512MB
题目描述
时间限制:3000ms
内存限制:512MB
有 N 个球从左到右排列。第 i 个球的颜色是颜色 Ci,并且上面写有一个整数 Xi。
小码君想要对这些球排序,使得球上的整数从左到右是非递减的。
换句话说,他的目标是:对于任意 i (1≤i≤N−1),从左数第 (i+1) 个球上的数字大于或等于从左数第 i 个球上的数字。
为此,小码君可以重复执行以下操作任意次(可能为零次):
- 选择一个整数 i (1≤i≤N−1)。
- 如果从左数第 i 个球和第 (i+1) 个球的颜色不同,则支付 1 元钱。 (如果颜色相同,则不需要支付费用)。
- 交换从左数第 i 个球和第 (i+1) 个球的位置。
求小码君为了实现目标需要支付的最小总费用。
数据范围
- 2≤N≤3×105
- 1≤Ci≤N
- 1≤Xi≤N
- 所有输入数据均为整数。
输入格式
对于每个测试文件格式如下:
N
C1 C2 … CN
X1 X2 … XN
输出格式
对于每个测试文件输出为实现目标所需的最低总成本。
输入输出样例
输入#1
5 1 5 2 2 1 3 2 1 2 1
输出#1
6
输入#2
3 1 1 1 3 2 1
输出#2
0
输入#3
3 3 1 2 1 1 2
输出#3
0
说明/提示
样例 1:
我们使用 ( 颜色 , 整数 ) 的二元组来表示一个球。
球的初始顺序为 (1,3),(5,2),(2,1),(2,2),(1,1)。以下为操作步骤:
- 交换第 1 个球(颜色 1)和第 2 个球(颜色 5)。现在球的顺序是 (5,2),(1,3),(2,1),(2,2),(1,1)。
- 交换第 2 个球(颜色 1)和第 3 个球(颜色 2)。现在球的顺序是 (5,2),(2,1),(1,3),(2,2),(1,1)。
- 交换第 3 个球(颜色 1)和第 4 个球(颜色 2)。现在球的顺序是 (5,2),(2,1),(2,2),(1,3),(1,1)。
- 交换第 4 个球(颜色 1)和第 5 个球(颜色 1)。现在球的顺序是 (5,2),(2,1),(2,2),(1,1),(1,3)。
- 交换第 3 个球(颜色 2)和第 4 个球(颜色 1)。现在球的顺序是 (5,2),(2,1),(1,1),(2,2),(1,3)。
- 交换第 1 个球(颜色 5)和第 2 个球(颜色 2)。现在球的顺序是 (2,1),(5,2),(1,1),(2,2),(1,3)。
- 交换第 2 个球(颜色 5)和第 3 个球(颜色 1)。现在球的顺序是 (2,1),(1,1),(5,2),(2,2),(1,3)。
最后一次操作后,球上的数字从左到右依次为 1,1,2,2,3。
第 1、 2、 3、 5、 6 和第 7 次操作各产生 1 元的费用,总花费为 6,即最小花费。
需要注意的是,第 4 次操作不会产生费用,因为两个球的颜色都是 1 。
样例 2:
所有球的颜色相同,因此交换球不产生任何费用。
样例 3:
所有球上的数字已经按照非递减顺序排列,无需任何操作。