离散化模板

针对无重复元素的离散化

1 for(i = 1;i <= n; ++i) p[i].pos = i,in(p[i].v);
2 sort(p+1,p+n+1);
3 int id = 0;
4 for(i = 1;i <= n; ++i) {
5     a[p[i].pos] = i;
6 }

$p[i].pos$为在原序列中的位置,$p[i].v$为要离散的值,$a$数组为离散后的值

针对有重复元素的离散化

1 for(i = 1;i <= n; ++i) p[i].pos = i,in(p[i].v);
2 sort(p+1,p+n+1);
3 int id = 0;
4 for(i = 1;i <= n; ++i) {
5     if(p[i].v > p[i-1].v) ++id;
6     a[p[i].pos] = id;
7 }
原文地址:https://www.cnblogs.com/mzg1805/p/11384922.html