动态问题 <-> 静态问题(互相转化,类似扫描线)
将静态的问题变为动态的待修改的问题
逆序对2:问有多少组(i,j)有i < j并且a[i] > a[j] (每个a[i]只出现一次)
- 思想1:对于i<j,a[i] > a[j]静态问题,将其转化为动态的
类似:
for j = 1 ~ n
统计a1~j-1里>a的数的个数
维护一个数据结构D:其中存a1~j-1数字,至此问题转化为D中存在多少数字>a[i],统计完成时再将a[i]加入D,依次维护
将静态的问题变为动态的待修改的问题
逆序对2:问有多少组(i,j)有i < j并且a[i] > a[j] (每个a[i]只出现一次)
类似:
for j = 1 ~ n
统计a1~j-1里>a的数的个数
维护一个数据结构D:其中存a1~j-1数字,至此问题转化为D中存在多少数字>a[i],统计完成时再将a[i]加入D,依次维护