• 离散化(模板)


    离散化是什么:一些数,他们的范围很大(0-1e9),但是个数不算多(1-1e5),并且这些数本身的数大小不重要,重要的是这些数之间的相对大小(比如说某个数是这些数中的第几小,而与这个数本身大小没有关系,要的是相对大小)(6 8 9 4 离散化后即为 2 3 4 1)(要理解相对大小的意思)(6在这4个数中排第二小,那么就把6离散化成2,与数6本身没有关系, 8,9,4亦是如此)

    离散化思想:因为数字太大,导致没有办法开那么大的数组,又因为数字个数并不多,这时候就可以对它们进行离散化,离散化是改变了数字的相对大小,例如,有500000个数字,他们的范围是0-1e9的,这样就满足离散化的条件。

    以上转自:https://blog.csdn.net/xiangaccepted/article/details/73276826

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include <cstring>
    using namespace std;
    int a[1000],b[1000];
    int n;
    void LS()
    {
        int m=0;
        for(int i=1; i<=n; ++i)
            b[++m]=a[i];
        sort(b+1,b+1+m);
        m=unique(b+1,b+1+m)-b-1;
        for(int i=1; i<=n; ++i)
            a[i]=lower_bound(b+1,b+1+m,a[i])-b;
        return ;
    }
    int main()
    {
        int i,j,k;
        cin>>n;
        for(i=1; i<=n; i++)
            cin>>a[i];
        LS();
        for(i=1; i<=n; i++)
            cout<<a[i]<<" ";
        return 0;
    }
  • 相关阅读:
    在HTML中使用JavaScript
    七层网络模型
    JS执行机制
    继承
    变量作用域
    跨域
    ES6-Promise
    回调函数
    2019.3.9笔试
    CSS3新特性
  • 原文地址:https://www.cnblogs.com/jk17211764/p/9677359.html
Copyright © 2020-2023  润新知