【bzoj3295】[Cqoi2011]动态逆序对

2014年6月17日4,8264

Description

对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。

Input

输入第一行包含两个整数nm,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。

Output

输出包含m行,依次为删除每个元素之前,逆序对的个数。

Sample Input

5 4
1
5
3
4
2
5
1
4
2

Sample Output

5
2
2
1
样例解释
(1,5,3,4,2)(1,3,4,2)(3,4,2)(3,2)(3)。

HINT

N<=100000 M<=50000

题解

树状数组套线段树

删除某个数,只要统计它之前还存在的比它大的数的个数,和之后还存在的比它小的数的个数

 

  • zld37949552014年6月17日 下午7:49 回复

    Orzhzwer学长= =我原来写树状数组套主席树一直爆内存只好用CDQ分治水了T T

    #1  
    • hzwer2014年6月17日 下午8:02 回复
      admin

      orz北大爷。。。CDQ分治水…我不会CDQ分治

      #11
      • zld37949552014年6月18日 上午8:36 回复

        OrzHZWER学长。。直接把本弱CDQ分治给D成水了T T

        #12
        • hzwer2014年6月18日 下午12:37 回复
          admin

          我只是在复述你的话

          #13