在一个序列中,如果存在a[i]j,则称a[i],a[j]为逆序对。
如1 5 7 2 4中,逆序对有{5,2},{5,4},{7,2},{7,4}。
方法1 归并
方法2树状数组
暂时不会。
例题
有n项寒假作业。a给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力。b现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于k?
简单地说,给定n个正整数A1,A2,A3,…,An,求出有多少个连续的子序列的平均值不小于k。
我们可以求前缀和sum,若要满足题意则(sum[j]-sum[i-1])/(j-i+1)>=k。
化简得(a[i]-k)+(a[i+1]-k)+…+(a[j]-k)>=0;
我们可以另设一个数组 b[],使 b[i]=a[i]-k;
所以b[i]+b[i+1]+…+b[j]>=0
所以可以在用前缀和
pre[j]-pre[j-1]>=0
所以,这是一个不逆序对(乱定义)。