离散化的实现

离散化,顾名思义,就是将比较大的数离散成比较小的数,若一共有1e4的数字,大小在0~1e9,这时你可将其离散化,在离散的过程中注意有相同的数字,这时它们的大小应该是一样的,否则会GG,在离散过程中,可先将其排序,运用lower_bound寻找第一个大于等于它的数即可

int al[10010], bl[10010],n;
scanf("%d",&n);
for(int i=1; i<=n; i++) scanf("%d",a[i]),bl[i]=al[i];
sort(bl+1,bl+n+1);
for(int i=1;i<=n;i++)
    a[i]=lower_bound(bl+1,bl+1+n,a[i])-bl;

猜你喜欢

转载自blog.csdn.net/sjzezwzy/article/details/80957635