zoukankan      html  css  js  c++  java
  • 逆序数和线段树的关系

    考虑一下逆序数的定义:

    { 2, 4, 3, 1 } 

    分别是(2,1), (4,3), (4,1), (3,1)

    也就是说针对一个数。判断在这个序列中这个数位置后面的数有多少个比它小。

    也就是说针对一个数。判断在这个序列中这个数位置之前有多少个数比它大。

    那就是询问当前数~n 区间上的出现了多少个数。 (由于我们询问顺序是从前到后(左到右)。所以在当前数前面且比它大的都更新过了。)

    注意这里把极端列为n。 如果不是n就要离散化。

    知道逆序数。求原排列。

    从小到大开始确定。

    比如说。 4的逆序为3。

    按照逆序数的等价说法。

    在序列中 4 这个数字位置之前有3个数比4大。

    那我们初始化线段树。叶子节点为1。其余节点为区间和。

    从左到右 查到 当前空位( 1为空位。 0为非空。)

    其中更新时候 把第当前数的空位置清为0。非空即可。

  • 相关阅读:
    摩根斯坦利面试
    Interview Preparation IV
    Interview Preparation III
    Interview Preparation II
    Interview Preparation I
    ASCII Characters
    Java Serialization
    贝莱德伦敦分部面试
    SVG基本知识
    前端知识整理(四)【HTTP相关】
  • 原文地址:https://www.cnblogs.com/Milkor/p/4522590.html
Copyright © 2011-2022 走看看