前言
新人,第一道水题
作者:H_D_NULL
本文的其他链接:我的博客
题目链接:P1437 [HNOI2004]敲砖块
解题思路
首先,经过观察,我们发现如果一块砖头被敲,那么其上一层与其相邻的两块砖头也必须被敲,这两块砖头又会影响与它们相邻的上层砖头……就会形成以下一个三角形:
这就相当于DP的一个状态,而且可以预处理,不禁让我们想到了用DP的方法求解。
但是,我们发现敲了多个砖头时,多个三角形可能会产生重叠:
这样就产生了后效性,不符合动态规划的原则。
难道,只有放弃了吗……
振作起来啊!经过观察,我们可以发现即使三角形有重叠,但它们的轮廓线始终保持某种规律,即可看做这几个三角形轮廓线的重叠:
所以我们可以以每个点为状态,最终构造出一条合法的轮廓线,最终达到DP的目的。
对于一个点,它的状态只能从他的左边,左下和左上转移而来,具体的状态转移方程会在代码中呈现。
值得注意的是,这条轮廓线可能不连续,所以要利用状态0来保存之前的合法轮廓线(具体见代码)。
下面上代码:
1 |
|
本文作者:
益题 Yitee
发布时间: 2020-11-04
最后更新: 2021-08-19
本文标题: 9.[HNOI2004]敲砖块
本文链接: https://yitee.top/posts/17019.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
发布时间: 2020-11-04
最后更新: 2021-08-19
本文标题: 9.[HNOI2004]敲砖块
本文链接: https://yitee.top/posts/17019.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
