YetAnotherGridTask
[ABC311F] Yet Another Grid Task
考虑找规律。
我们先将必定要填黑的格子填完。
对于以下的矩形
....#.
......
.#....
......
......
处理后
....#.
....##
.#..##
.##.##
.#####
一个必要的观察是:对于从右上角到左下角的次对角线,对角线上必定存在一个分界点,使得其左边全为白,其右边包括其在内全为黑,且随着对角线的移动,分界点往左。
具体的图
空的话就当作最后一个白色的右边。
如上图
根据这个性质我们可以 DP
,较容易的设计状态并转移。
令
我们从右上往左下 DP
。
为了方便起见,我们假设网格在右方向和下方向上是无限大的,并且下面/右面增加的无限格子均为黑色。
然后令
- 首先,可以得到方程
( 即全白,我们忽略越界)。 - 其次,若
。 - 最后,如果
这个格子必须为黑色(包括 ,因为我们规定了网格在右方向和下方向上是无限大的),那么 (因为 这个格子必定被染)。
答案就是
复杂度
AC
另外一种理解方式
如果将题目变更为下方、右方,那么令
转移显然,
然后如果我们对原网格进行变形,将它拉成一个平行四边形,即将给定的网格向下推,使其左上角斜向变形如下:
#...#
.....
.....
.....
#....
↓
#
..
...
....
#....
....
...
..
#
这样做的话,“下和右下”这个条件就变成了“下和右”的条件,因此可以像前面提到的问题一样解决。
这个做法其实和对角线的做法如出一辙。
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17574922.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步