Live2D

数据离散化

在一些问题中,我们只会关心某个数字的相对位置,而不会去关心它们具体是多大。

对于这种类型的题目,我们需要对数据进行离散化。

离散化是一种映射的过程,过程中我们要获得所有数字的具体排名。

举个栗子

数组 1,23424,21472313246768,6594,95,0,65535313

离散化后  1,4,6,3,2,0,5

1 for(register int i=1;i<=n;++i)
2     scanf("%d",&num[i]) , f[i]=num[i];
3 sort(f+1,f+n+1);
4 int m=unique(f+1,f+n+1)-f-1;
5 for(register int i=1;i<=n;++i)
6     num[i]=lower_bound(f+1,f+m+1,num[i])-f;
7 for(register int i=1;i<=n;++i)
8     printf("%d ",num[i]);

 

posted @ 2019-09-25 16:28  Hoyoak  阅读(213)  评论(0编辑  收藏  举报