轮廓线 dp
轮廓线 dp 是一种和插头 dp 基本相同的东西,所以先看一下轮廓线 dp。
Tiling Dominoes#
与状压 dp 不同的是,轮廓线 dp 是通过逐格转移来进行 dp 的。我们用三维 来表示 dp 状态。其中, 表示当前进行到 这个格子, 表示轮廓线状态。具体的,在下面的情况中,。
回到题目。
- 当这个格子被覆盖了,也就是 的第 位为 时,我们不能在格子上放任何多米诺骨牌。 的第 位变成 。
- 当这个格子没有被覆盖,也就是 的第 位为 :
- 我们可以竖着放。 的第 位变成 。
- 当 的第 位之前选择的是竖着放的时候,说明本来 是空闲的。我们可以把这个多米诺骨牌横过来。 的第 位变成 。
- 这里我们没有暂时空闲的情况,因为暂时空闲给下一个格子放横的骨牌的情况已经被处理过了。
时间复杂度 。这里转移是 的,这也是轮廓线 dp 的优势。
Guards In The Storehouse#
这道题难点主要在于 dp 状态的设计和繁琐的转移。转移不多叙述。
设 表示当前在 格子,当前 列每一列是否被占用的状态为 ,这一行有没有被占用的布尔值为 ,空一格的机会是否被使用的布尔值为 。
作者:DE_aemmprty
出处:https://www.cnblogs.com/aemmprty/p/18090236
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂