轮廓线 dp
轮廓线 dp 是一种和插头 dp 基本相同的东西,所以先看一下轮廓线 dp。
Tiling Dominoes
与状压 dp 不同的是,轮廓线 dp 是通过逐格转移来进行 dp 的。我们用三维 \(f_{i, j, k}\) 来表示 dp 状态。其中,\(i,j\) 表示当前进行到 \((i,j)\) 这个格子,\(k\) 表示轮廓线状态。具体的,在下面的情况中,\(k = \texttt{(11001001)}_2\)。
回到题目。
- 当这个格子被覆盖了,也就是 \(k\) 的第 \(j\) 位为 \(\texttt{1}\) 时,我们不能在格子上放任何多米诺骨牌。\(k\) 的第 \(j\) 位变成 \(\texttt{0}\)。
- 当这个格子没有被覆盖,也就是 \(k\) 的第 \(j\) 位为 \(\texttt{0}\):
- 我们可以竖着放。\(k\) 的第 \(j\) 位变成 \(\texttt{1}\)。
- 当 \(k\) 的第 \(j - 1\) 位之前选择的是竖着放的时候,说明本来 \(j - 1\) 是空闲的。我们可以把这个多米诺骨牌横过来。\(k\) 的第 \(j - 1\) 位变成 \(\texttt{0}\)。
- 这里我们没有暂时空闲的情况,因为暂时空闲给下一个格子放横的骨牌的情况已经被处理过了。
时间复杂度 \(\mathcal{O}(nm2^m)\)。这里转移是 \(\mathcal{O}(1)\) 的,这也是轮廓线 dp 的优势。
Guards In The Storehouse
这道题难点主要在于 dp 状态的设计和繁琐的转移。转移不多叙述。
设 \(f_{i, j, k, x, y}\) 表示当前在 \((i, j)\) 格子,当前 \(m\) 列每一列是否被占用的状态为 \(k\),这一行有没有被占用的布尔值为 \(x\),空一格的机会是否被使用的布尔值为 \(y\)。
轮廓线 dp的更多相关文章
- 轮廓线DP POJ3254 && BZOJ 1087
补了一发轮廓线DP,发现完全没有必要从右往左设置状态,自然一点: 5 6 7 8 9 1 2 3 4 如此设置轮廓线标号,转移的时候直接把当前j位改成0或者1就行了.注意多记录些信息对简化代码是很有帮 ...
- HDU4804 Campus Design 轮廓线dp
跟上面那篇轮廓线dp是一样的,但是多了两个条件,一个是在原图上可能有些点是不能放的(即障碍),所以转移的时候要多一个判断color[i][j]是不是等于1什么的,另外一个是我们可以有多的1*1的骨牌, ...
- POJ2411 Mondriaan's Dream 轮廓线dp
第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少 ...
- UVA - 11270 轮廓线DP
其实这题还能用状压DP解决,可是时间达到2000ms只能过掉POJ2411.状压DP解法详见状压DP解POJ2411 贴上POJ2411AC代码 : 2000ms 时间复杂度h*w*(2^w)*(2^ ...
- [UOJ422][集训队作业2018]小Z的礼物——轮廓线DP+min-max容斥
题目链接: [集训队作业2018]小Z的礼物 题目要求的就是最后一个喜欢的物品的期望得到时间. 根据$min-max$容斥可以知道$E(max(S))=\sum\limits_{T\subseteq ...
- 【UOJ#422】【集训队作业2018】小Z的礼物(min-max容斥,轮廓线dp)
[UOJ#422][集训队作业2018]小Z的礼物(min-max容斥,轮廓线dp) 题面 UOJ 题解 毒瘤xzy,怎么能搬这种题当做WC模拟题QwQ 一开始开错题了,根本就不会做. 后来发现是每次 ...
- BZOJ.4572.[SCOI2016]围棋(轮廓线DP)
BZOJ 洛谷 \(Description\) 给定\(n,m,c\).\(Q\)次询问,每次询问给定\(2*c\)的模板串,求它在多少个\(n*m\)的棋盘中出现过.棋盘的每个格子有三种状态. \( ...
- 4572: [Scoi2016]围棋 轮廓线DP KMP
国际惯例的题面:这种题目显然DP了,看到M这么小显然要状压.然后就是具体怎么DP的问题.首先我们可以暴力状压上一行状态,然后逐行转移.复杂度n*3^m+3^(m*2),显然过不去. 考虑状态的特殊性, ...
- Solid Dominoes Tilings (轮廓线dp打表 + 容器)
第一步先打一个表,就是利用轮廓线DP去打一个没有管有没有分界线组合数量的表 #include<bits/stdc++.h> using namespace std; ; <<; ...
- HDU 4802 && HDU 4803 贪心,高精 && HDU 4804 轮廓线dp && HDU 4805 计算几何 && HDU 4811 (13南京区域赛现场赛 题目重演A,B,C,D,J)
A.GPA(HDU4802): 给你一些字符串对应的权重,求加权平均,如果是N,P不计入统计 GPA Time Limit: 2000/1000 MS (Java/Others) Memory ...
随机推荐
- Ubuntu下好用的工具
UML画图工具 推荐:Drawio 参考:https://blog.csdn.net/jsm1010/article/details/112920539 安装命令:sudo snap install ...
- C# unsafe 快速复制数组
(1) /// <summary> /// 复制内存 /// </summary> /// <param name="dest">目标指针位置& ...
- Httprunner 文件上传场景
使用Httprunner在做接口自动化的时候,经常会遇到需要上传文件的场景,下面讲一下关于Httpruner文件上传的用例编写. 1. 建项目 首先我们使用httprunner的脚手架快速搭建一个工程 ...
- Qt图像处理技术四:图像二值化
Qt图像处理技术四:图像二值化 github 如果你觉得有用的话,期待你的小星星 实战应用项目: github :https://github.com/dependon/simple-image-fi ...
- Spring注解之@Autowired:按类型自动装配Bean到数组、集合和Map
在Spring Boot项目中,如何把某些接口的多个实现类的Bean注入到Arrays, java.util.Collection 和 java.util.Map类型的变量中,方便应用的时候直接读取? ...
- Spring注解之获取自定义注解信息
目录 前言 由反射获取自定义注解 结束语 前言 在了解了自定义注解的入门知识后,以实践的形式,介绍一下通过反射技术获取自定义注解的常用API,例如如何获取自定义注解的成员变量值等等. 由反射获取自 ...
- golang遍历处理map时的常见性能陷阱
最近一直在重构优化老系统,所以性能优化相关的文章会比较多. 这次的是有关循环处理map时的性能优化.预分配内存之类的大家都知道的就不多说了,今天来讲点大伙不知道的. 要讲的一共有三点,而且都和循环处理 ...
- 在Matlab中如何计算决定系数R^2和相关系数r
Problem 当你使用 polyfit 函数进行多项式拟合之后,你希望计算决定系数或者相关系数看看拟合效果如何.聪明的你肯定觉得聪明的 Matlab 的 polyfit 函数的返回值中会有 \(R^ ...
- Python中的cls变量
技术背景 在Python的类型设计中,有时候会遇到一个cls参数.其实cls参数就是一个约定俗成的名称,用其他的名字也能正常运行但不建议这么用.它的作用类似于实例方法中的self参数,代表的是类本身, ...
- 提升PHP并行处理效率:深入解析数组排序算法及优化策略
本文由 ChatMoney团队出品 在 PHP 开发中,数组排序是一个常见的操作.随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的 ...