[CESC] Maximum Building II 简单题解

上午才做了,下午被神仙问的时候说的一点都不清楚,但现在清楚多了,还是记一记,说个大概思路,毕竟网上连题解都没有。

考虑先对于每一个点求出以他为矩形左上角的矩形,不触碰障碍物。

然后考虑对于每一个进行考虑,你考虑每次以这个矩形的左边开始,往下选出的矩形,然后矩形里每个地方都可以有一个贡献,相当于会给这些 +1 。

然后容易发现,考虑只要第 \(i\) 列可以,那么第 \(i-1\) 列也可以。

那么就直接考虑最后一列,然后在这上面不断加,容易发现这东西是一个不断往上加层的覆盖,区间 + 1, 等价于是一个差分,然后做 \(n\) 次差分,复杂度为 \(n^3\) 的。

然后考虑将差分再差分之后,发现只有 \(4\) 个位置进行了修改,那就很舒服了,直接 \(nm\) 暴力差分修改。

最后做两次列里的前缀和,然后就将两次差分变成了答案。

然后在横着做一个后缀和,然后就求出答案了。

代码由于博主在睡大觉,于是后面再放,也可以直接私信博主催放。

posted @ 2021-10-29 18:56  Pitiless0514  阅读(141)  评论(3)    收藏  举报