首先感觉无从下手?考虑换一个对答案的贡献体(这是个惯用套路)(一开始是点的集合,后来我又想换成矩形,发现仍然不可做,就偏偏没有想到换成点)。
显然,点对答案的贡献就是有多少个集合生成的矩形包含这个点。知道了这个就并不是很难了。我们考虑以该点为原点建立平面直角坐标系,然后集合有两种情况:
- 包含该点,此时矩形显然一定包含该点,则贡献是 (2^{n-1});
- 不包含该点。那么显然,该点被矩形包含当且仅当一、三象限都有点或二、四象限都有点。然后四个象限的点数是个二维数点问题,这是个静态的,于是可以对一维排序来降维,从而使用 BIT 1log 解决。然后你如果把两种都算上去的话,那会有一二三四象限都有点的重复情况,那这是个简单容斥,减一下即可。
也就是,设四个象限的点数分别为 (I,II,III,IV) 的话,那么贡献是:
[egin{aligned}&2^{n-1}+\&!left(2^{II}-1
ight)!left(2^{IV}-1
ight)!2^{I}2^{III}+\&!left(2^{I}-1
ight)!left(2^{III}-1
ight)!2^{II}2^{IV}-\&!left(2^{II}-1
ight)!left(2^{IV}-1
ight)!left(2^{I}-1
ight)!left(2^{III}-1
ight)end{aligned}
]
然后就做完了,复杂度线性对数。