CF364E Empty Rectangles

题意:给出一个 矩阵,求有多少个子矩阵含有恰好

,时限


考虑分治,轮换切割整个矩阵。

每次只需要考虑跨越分割线的子矩阵。

枚举子矩阵的上下两个边界,如图(红色是上下边界)

然后枚举左侧有多少个 ,右侧也随之确定。

为左侧包含 最近延伸的距离。特殊地,若得不到 个,则值为横向距离

类似。

则矩形个数为 考虑如何求出

固定上边界,将下边界逐渐下移。

每移动一格,则会加入一行 ,只需处理前 个的影响。归并即可。

需要预处理每个位置左边的第一个 和右边的第一个

分析复杂度时不妨设 ,一次分割的复杂度为 线,由于分割出的区域近似于正方形,割线长度的平方近似于面积。复杂度为