• 蒟蒻的离散化模板


      当数据很大,但是数并不多的时候,可能我们开不下那么大的数组,但是所求答案本身又与数本身的大小无关,只与数的相对大小有关,这时我们就可以把这些数相对大小不变的缩小,称之为离散化。我的离散化一直都是用的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中是第几个,他就是第几小的,他压缩之后的值就是这个,这样就可以保证数据的相对大小关系不被改变
    }
  • 相关阅读:
    校门外的树
    年龄与疾病
    数组逆序重放
    计算书费
    陶陶摘苹果
    与指定数字相同的数的个数
    上学路线
    NOIP2011 普及組 統計單詞數
    [HAOI2012]音量调节
    [USACO11JAN]利润Profits
  • 原文地址:https://www.cnblogs.com/yuelian/p/12295731.html
Copyright © 2020-2023  润新知