zoukankan      html  css  js  c++  java
  • 离散化

    当输入数据跨度大,但是比较稀疏时,就没有必要开几万几百万的数组,可以用离散化求得其相对位置,以节省资源,提高效率。

     1 #include <cstdio>
     2 #include <algorithm>
     3 
     4 using namespace std;
     5 
     6 int n, a[maxn], mp[maxn];
     7 
     8 inline void discretize() {
     9     for (int i = 1; i <= n; ++i)
    10         mp[i] = a[i]; //先将原序列复制到mp数组
    11     sort(mp + 1, mp + n + 1);
    12     mp[0] = unique(mp + 1, mp + n + 1) - mp - 1;
    13     //对mp数组排序并去重
    14     for (int i = 1; i <= n; ++i)
    15         a[i] = lower_bound(mp + 1, mp + mp[0] + 1, a[i]) - mp;
    16         //将a数组更新成初始元素的相对大小
    17 }
  • 相关阅读:
    20201031
    20201028
    20201026
    20201027
    20201020
    ReentrantReadWriteLock原理分析
    java中Thread源码介绍
    CountDownLatch原理分析
    Semaphore原理分析
    AQS-共享模式分析
  • 原文地址:https://www.cnblogs.com/Mr94Kevin/p/7268790.html
Copyright © 2011-2022 走看看