设相邻位置 j 的交换代价为 cj:
当 bj<bj+1 时,cj=1;否则 cj=0。
题目中的冒泡排序是从左到右扫描。对于原数组中第 i 个元素 ai,只考虑它左边比它大的元素数量,记为 cnti。这些元素都会在冒泡排序过程中与 ai 发生交换。
关键性质:
游游有两个长度同为 n 的整数数组 a 和 b。她会对数组 a 执行标准冒泡排序来将其排成非递减序列(数组 b 始终不变):
每次实际发生交换时,其代价由当前位置对应的固定值 bj,bj+1 决定:
请你计算,按照上述固定的冒泡排序过程把数组 a 排成非递减后,所有交换操作的总代价。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤105)代表数据组数。每组测试数据描述如下:
保证单个测试文件中所有测试数据的n之和不超过 5×105。
对于每组测试数据,输出一行一个整数,表示按题目所述的固定冒泡排序过程将数组 a 排成非递减序列时,所有实际发生交换的总代价之和。。
输入
2
4
2 1 2 1
3 1 2 2
6
17 15 12 10 18 3
1 5 1 3 1 2
输出
1
7
说明
第一组数据中,按标准冒泡排序过程,恰好只会发生一次代价为 1 的交换,因此答案为 1。
第二组数据中,按照固定的冒泡排序顺序累计交换代价为7,因此答案为7。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册