zoukankan      html  css  js  c++  java
  • 蒟蒻的离散化模板

      当数据很大,但是数并不多的时候,可能我们开不下那么大的数组,但是所求答案本身又与数本身的大小无关,只与数的相对大小有关,这时我们就可以把这些数相对大小不变的缩小,称之为离散化。我的离散化一直都是用的stl,sort+unique+lower_bound

    代码:

    void lisan()
    {
        sort(a+1,a+n+1);//排序是为了二分
        tot=unique(a+1,a+n+1)-a-1;//把数组中重复的元素放到最后面,并返回不重复元素的最后一个下标
        for(int i=1;i<=n;++i)
            b[i]=lower_bound(a+1,a+tot+1,b[i])-a;//a数组只是一个暂存的数组,现在的b数组才是保持着原来顺序的数组,因为a数组已经排过序了,
    //所以b在a中是第几个,他就是第几小的,他压缩之后的值就是这个,这样就可以保证数据的相对大小关系不被改变
    }
  • 相关阅读:
    流程控制之if判断
    各种运算符
    输入和输出
    垃圾回收机制(详细)
    3/5 作业
    3/4 作业
    数据类型
    变量
    Checkout 显示 URL /../../.. 不存在
    Tomcat8 访问 manager App 失败
  • 原文地址:https://www.cnblogs.com/yuelian/p/12295731.html
Copyright © 2011-2022 走看看