数据的离散化处理

在ACM中 经常有 数据m<=50000(不多) 但是 a[i]<=inf这样的情况 这种时候就应该离散化处理

比如 10 3 2 9 1 和 5 3 2 4 1 等价(多用于逆序数) 

我们要怎么办呢?

首先有两个数组 init[n] copy[n]输入进init 之后 复制到copy 对copy进行排序 并且去重(这个地方的stl unique非常好用!)

int size=unique(copy,copy+n)-copy;

然后now[n']数组 now[i]=lower_bound(a,a+n',init[i])-a+1;

总的复杂度nlgn

你可能感兴趣的:(数据的离散化处理)