[JOI 2022 Final] 沙堡 2 (Sandcastle 2)

考虑一个位置

在被足够大的子矩形框柱之后

他的朝向是固定的(即一定固定指向一个格子)

不妨将这个指向 看成格子之间的连边


考虑到一个子矩阵 存在一条曼哈顿路径 ,当且仅当 只有一个格子满足入度为0

那么就有个想法--------快速维护子矩阵内 是否有一个格子的入读为0


考虑对于一个子矩阵

贴着边界的格子,以及靠近边界的格子, 距离边界的距离 >= 2的格子 这三种情况的格子的入度的计算是不一样的

贴着边界的格子,以及靠近边界的格子,他们的入度 需要预处理快速得到

并且对于 距离边界的距离 >= 2的格子 也预处理一下

所以需要预处理出 16种情况的(上下左右是否贴着边界)

然后就好做了

考虑一个一般化的子矩阵

只用分25种矩形的前缀和做做就好了

会做\(nm * nm\)的话,对于全部的数据,要做完并不难吧

posted @ 2022-03-17 21:18  After_rain  阅读(337)  评论(0)    收藏  举报