轮廓线 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的更多相关文章

  1. 轮廓线DP POJ3254 && BZOJ 1087

    补了一发轮廓线DP,发现完全没有必要从右往左设置状态,自然一点: 5 6 7 8 9 1 2 3 4 如此设置轮廓线标号,转移的时候直接把当前j位改成0或者1就行了.注意多记录些信息对简化代码是很有帮 ...

  2. HDU4804 Campus Design 轮廓线dp

    跟上面那篇轮廓线dp是一样的,但是多了两个条件,一个是在原图上可能有些点是不能放的(即障碍),所以转移的时候要多一个判断color[i][j]是不是等于1什么的,另外一个是我们可以有多的1*1的骨牌, ...

  3. POJ2411 Mondriaan's Dream 轮廓线dp

    第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少 ...

  4. UVA - 11270 轮廓线DP

    其实这题还能用状压DP解决,可是时间达到2000ms只能过掉POJ2411.状压DP解法详见状压DP解POJ2411 贴上POJ2411AC代码 : 2000ms 时间复杂度h*w*(2^w)*(2^ ...

  5. [UOJ422][集训队作业2018]小Z的礼物——轮廓线DP+min-max容斥

    题目链接: [集训队作业2018]小Z的礼物 题目要求的就是最后一个喜欢的物品的期望得到时间. 根据$min-max$容斥可以知道$E(max(S))=\sum\limits_{T\subseteq ...

  6. 【UOJ#422】【集训队作业2018】小Z的礼物(min-max容斥,轮廓线dp)

    [UOJ#422][集训队作业2018]小Z的礼物(min-max容斥,轮廓线dp) 题面 UOJ 题解 毒瘤xzy,怎么能搬这种题当做WC模拟题QwQ 一开始开错题了,根本就不会做. 后来发现是每次 ...

  7. BZOJ.4572.[SCOI2016]围棋(轮廓线DP)

    BZOJ 洛谷 \(Description\) 给定\(n,m,c\).\(Q\)次询问,每次询问给定\(2*c\)的模板串,求它在多少个\(n*m\)的棋盘中出现过.棋盘的每个格子有三种状态. \( ...

  8. 4572: [Scoi2016]围棋 轮廓线DP KMP

    国际惯例的题面:这种题目显然DP了,看到M这么小显然要状压.然后就是具体怎么DP的问题.首先我们可以暴力状压上一行状态,然后逐行转移.复杂度n*3^m+3^(m*2),显然过不去. 考虑状态的特殊性, ...

  9. Solid Dominoes Tilings (轮廓线dp打表 + 容器)

    第一步先打一个表,就是利用轮廓线DP去打一个没有管有没有分界线组合数量的表 #include<bits/stdc++.h> using namespace std; ; <<; ...

  10. 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 ...

随机推荐

  1. 信息资源管理综合题之“公钥密码体系中同一个用户拥有的密钥特点 和 如何使用密钥加解密才能保证传输数据的机密性 和 如何身份认证 和 CA的作用”

    一.公钥密码体制在认证技术中是广泛使用的.结合加密和认证技术知识回答以下问题: 1.公钥密码体系中同一个用户拥有的密钥的特点是什么? 2.假设A.B是公钥密码体系的用户,A向B发送数据,A.B之间如何 ...

  2. dotnet-trace 分析.net程序性能

    在现代 .NET 开发中,性能分析和故障诊断是确保应用程序稳定性和高效性的关键步骤. 本文将介绍如何使用 dotnet-trace 工具进行 .NET Core 应用的性能跟踪,并结合 PerfVie ...

  3. STL vector容器存储键值对

    在阅读tvm源码时,发现了一个挺有意思的代码: std::vector<std::pair<std::string, ObjectRef>> update; vector容器里 ...

  4. C#正则之获取命名组所有捕获的数据

    static void ParseTest(string str) { Regex reg = new Regex(@"(?<num>\d+)(?<sg>[_!$#] ...

  5. debug与DOSBox安装&&debug命令操作

    文章目录 一. DOSBox && debug使用 1.安装配置(以下方法们按照从麻烦到简便的顺序) (1) 多步骤(可行,但不推荐) (2)一步到位(强烈推荐) 2. 窗口大小 二. ...

  6. 【公众号搬运】React-Native开发鸿蒙NEXT(8)

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  7. C#判断当前时间是否在规定时间段范围内(二维数组超简版)

    直接上C#代码 TimeSpan nowTime = DateTime.Now.TimeOfDay; string[,] arr = { { "7:50", "8:10& ...

  8. Spring注解之自定义注解入门

    目录 前言 注解是什么 自定义注解 元注解 @Target @Retention @Documented @Inherited 结束语 Reference 前言   在业务开发过程中,Spring 框 ...

  9. Ubuntu 通过 ssh 下载、上传文件

    下载文件 scp root@xxx.xxx.xxx.xxx:/root/file.txt /home 输入密码 上传文件 scp /home/file.txt root@xxx.xxx.xxx.xxx ...

  10. CRD的简单介绍

    介绍 Custom Resource Define 简称 CRD,是 Kubernetes(v1.7+)为提高可扩展性,让开发者去自定义资源的一种方式. CRD 资源可以动态注册到集群中,注册完毕后, ...