二维动态规划
在二维动态规划中,往往会有两个维度上的限制,此时,可以通过加维、换状态、改变枚举顺序来实现消除这两个维度的限制,但有时,往往需要分析
[P5664] Emiya 家今天的饭
分析题目,易知烹饪方法可以通过顺序枚举取消后效性,而主要食材加维、换序都不行,考虑别的道路
反向考虑,容斥原理
当正向思路受到阻塞时,可以尝试逆向思考
观察限制:每种主要食材至多在一半的菜中
反向考虑时,发现不合法方案中,在一半以上的菜中的主要食材只会有一种(不可能有两个一半以上),此时我们需要维护的只有该主要食材的状态,加维即可
设
剪枝优化
推出上面的方程发现是
观察方程:
(转移方程自己推)
首先,对于
其次,最后取得答案皆为
因此,我们可以把k和l的差值相同的状态压到一起,通过取
如何证明正确性?
1、由于转移方程相同,可以保证状态的正确转移,只要初始化时塞一起,就是正确的;
2、差值可以描述全部状态;
3、取出答案时,因为
注意k,l不能为总菜数、该食材菜数,此时用差值维护的话不一定全都非法(如差值3可以是4-1),可能会有式子使得它能够统计,但是像差值这么简单的大概没有罢(
总结
*&(
思维强度太高了
写出来力,但是处理差分负权时把边界
总之,容斥和压缩都是常见方法,标蓝很合理
[P2051] [AHOI2009] 中国象棋
题意:每行每列不超过2个棋,求方案数
行内元素
此时第一维限制处理掉了,第二维考虑加维
看到列支持交换,一个思路是将列有序化再组合,另一个思路是将列的整体性质记录
记录有几列取了0个/1个/2个即可,状态完全,支持转移
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】