CF364E Empty Rectangles 发表于 2025-02-26 分类于 算法竞赛 , 题 , Codeforces 阅读次数: 题意:给出一个 的 矩阵,求有多少个子矩阵含有恰好 个 。 ,,时限 。 考虑分治,轮换切割整个矩阵。 每次只需要考虑跨越分割线的子矩阵。 枚举子矩阵的上下两个边界,如图(红色是上下边界) 然后枚举左侧有多少个 ,右侧也随之确定。 设 为左侧包含 个 最近延伸的距离。特殊地,若得不到 个,则值为横向距离 。 类似。 则矩形个数为 考虑如何求出 。 固定上边界,将下边界逐渐下移。 每移动一格,则会加入一行 ,只需处理前 个的影响。归并即可。 需要预处理每个位置左边的第一个 和右边的第一个 。 分析复杂度时不妨设 ,一次分割的复杂度为 割线长度,由于分割出的区域近似于正方形,割线长度的平方近似于面积。复杂度为 。