P2448 无尽的生命

打印 上一主题 下一主题

主题 554|帖子 554|积分 1662

题目传送门
题意简述

看到题目显而易见是求逆序对个数。
思路分析

看到数据范围 \(x_i,y_i \le 2^{31}-1\),\(k \le 10^5\)。数据值域大但是个数少,且与数据之间的大小关系有关,因此考虑离散化。
离散化简单介绍

离散化实际就是一种映射,当数据值域过大而个数有限时,可以尝试离散化。
具体过程以此题为例。假设给出这么一组数据
  1. 2
  2. 123456789 123456
  3. 987654321 123456
复制代码
首先将所有出现过的数收集起来,存进 \(a\) 数组,并进行排序,然后再去重保存进 \(pos\) 数组当中。

接下来就可以建立映射关系。将数值大的数在 \(num\) 数组中用数值小的数代替,但各个数之间的大小关系不变,接下来交换操作先用二分答案在 \(pos\) 数组中检索,然后通过映射在 \(num\) 数组中进行交换。

最终被交换过的数之间的逆序对在 \(num\) 数组中求即可。
被交换的数与未被交换的数之间的逆序对

考虑每个被交换的数对答案的贡献。

设 \(x

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表