离散化模板

针对无重复元素的离散化

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 }

 

posted @ 2019-08-20 19:01  陈星卿  阅读(185)  评论(0编辑  收藏  举报