题意:
n(5*10^5)个不同的数字组成的序列a 寻找满足如下约束条件的数字组数: i1
思路:
明显考察的是nlogn的算法 我们发现其实ai1和ai2可以放在一起考虑 同理ai3和ai4 这两组并没有相互影响
我们来看答案是怎么构成的 假设枚举i3的位置 那么我们希望知道“i3后面有几个数大于ai3” 这个可以通过树状数组处理
同理假设我们知道i2也希望知道“i2前面有几个数小于ai2” 这个也可以树状数组
那么再利用i3>i2 则答案就可以表示为 sum( num(>ai3) * sum( num(
代码:
#include
#include
#include
#include
#include
#include