题目传送门
分析:
我们考虑求最终交集恰好为某个矩形的答案
发现这玩意不好求,我们退而求其次
求最终交集包含某个矩形的答案
这个就可以做了,考虑一个全1矩形贡献范围为给一个矩形内部+1,差分一下变成两个角+1,两个角-1
差分后的贡献可以转化为一个全1矩形对左上右上左下右下的贡献,这个做四次单调栈DP就好了
一个\(n*m\)的矩形会被他内部:
\(1*1\)的矩形算\(n*m\)次
\(1*2\)的矩形算\(n*(m-1)\)次
\(2*1\)的矩形算\((n-1)*m\)次
\(2*2\)的矩形算\((n-1)*(m-1)\)次
发现\(n*m+(n-1)*(m-1)-n*(m-1)-(n-1)*m=1\)这个矩形就只被算一次了
于是我们求最终交集包含的矩形的答案,只需要求得大小为\(1*1,1*2,2*1,2*2\)的矩形的答案就好了
复杂度\(O(n^2logK)\)
#include
#include
#include
#include
#include
#include
#include