在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非常好用!)
<span class="sh_type" style="color: rgb(0, 100, 0);">int</span> size<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_function" style="font-weight: bold;">unique</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_symbol">copy</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span><span class="sh_symbol">copy</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">+</span>n<span class="sh_symbol" style="color: rgb(139, 0, 0);">)-</span><span class="sh_symbol">copy</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
然后now[n']数组 now[i]=lower_bound(a,a+n',init[i])-a+1;
总的复杂度nlgn