• 「总结」插头$dp$


    集中做完了插头$dp$

    写一下题解。

    一开始学的时候还是挺蒙的。

    不过后来站在轮廓线$dp$的角度上来看就简单多了。

    其实就是一种联通性$dp$,只不过情况比较多而已了。

    本来转移方式有两种。逐行和逐格转移。

    不过逐行转移因为分类太多所以被舍弃了。

    一般的插头$dp$采用逐格转移。

    插头表示已经进入当前格子的状态,而并不是将要进入的状态。

    状态的表示方式常见的有两种:最小表示法和括号表示法。

    括号表示法不如说是广义括号表示法的特殊一种情况,每个插头也就是左右括号就是表示两个相匹配的回路部分,而最小表示法则是一般的广义括号匹配,只是括号只是单纯的表示一条线路的两端。

    1.$Ural 1519 Formula 1$

    括号表示法裸题。

    设两个插头,1表示左括号,2表示右括号。

    分一下类就可以了。

    0.0 如果是障碍格子就直接转移,如果是普通格子就可以开两个新的左右括号。

    下面的讨论均在非障碍格子下。

    0.1|0.2|1.0|2.0 将插头下移或者右移。

    1.1|2.2 首先将两个插头消除,找到其中一个插头匹配的插头,并将之改成这两个插头。

    2.1 消除插头。

    1.2 在最后一个非障碍格子更新答案。

    2.$CITY$

    跟上一题一模一样,不过是限定了转移的方向而已。

    3.邮递员

    仍然是括号表示法。

    其实和第一题仍然没什么区别,就是要遍历所有的地方,并且形成回路,注意到回路的顺逆时针走向是不同方案,所以最后答案*2。

    4.地板

    这个就是最小表示法了。

    设两个插头1,2分别表示没拐过和拐过弯的$L$形状,要求没有障碍物的部分都铺砖。

    那么开始分类讨论。

    如果有障碍物:只有0.0这种状态可以转移到下一个格子。

    如果没有障碍物:

    0.0 -> 1.0|0.1|2.2 表示当前点伸出能够从两个方向伸出两个可以拐弯的,或者根本就把这个点当作转折点,那两个方向都不可以拐弯。

    0.1 -> 0.1|2.0

    1.0 -> 1.0|0.2

    0.2 -> 0.2|0.0 如果没有其他插头,并且在最后一个非障碍格子可以更新答案。

    2.0 -> 2.0|0.0 如果没有其他插头,并且在最后一个非障碍格子可以更新答案。

    1.1 -> 0.0 两个没拐弯的匹配上了。

    2.2 -> 无法转移

    1.2 -> 无法转移

    5.标识设计

    其实和上一个题几乎一模一样。

    只不过在最后添加一维表示当前已经出现了的$L$有几个。

    如果已经出现了的有$3$个并且当前这个格子可以作为其中某一个的结束位置,那么更新答案。

    6.神奇游乐园

    和第一题一模一样就是把求方案改成了求最值。

    7.$Manhattan Wiring$

    这个题由于确定了起点和终点,所以不需要用到括号匹配。

    只用两个插头表示是哪个线的插头即可。

    8.$ParkII$

    看起来是括号匹配,其实是最小表示法

    和神奇游乐园大体上一样,是CDQ的论文题了。

    我们考虑新加入一个独立插头表示一条独立的路径,

    由于这次要求路径,所以会麻烦一点,这里的左右括号就不仅仅表示回路的两头了,而是表示一条路径的两头,这就是所谓一般性广义括号表示法,也就是最小表示法。

    左右括号转移大体上和神奇游乐园一样。

    多出来的独立插头设为3。

    多出来的转移就是:

    0.0 -> 0.3|3.0

    0.3|3.0 -> 0.3|3.0 如果只有一个插头的话就可以更新答案了。

    3.1|3.2|1.3|2.3 -> 0.0 清空当前两个括号,然后把1或者2对应的括号改为3。

    3.3 -> 如果只有这两个括号的话就可以更新答案了,不转移。

    暂时这么多。

  • 相关阅读:
    根据企业信息化应用需求来分析工作流平台的选型
    如何把文件上传到另外一台服务器【转自 金色約定之家】
    如何启用sqlplus的AutoTrace功能 【转】
    使用AJAX技术构建更优秀的Web应用程序
    提高ORACLE数据库的查询统计速度
    一个弹出式menu的制作
    鼠标滑过div显示与隐藏
    使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
    使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(上) 【转自http://dflying.cnblogs.com】
    用javascript来操作字符串
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12004519.html
Copyright © 2020-2023  润新知