首页 > 其他分享 >插头DP

插头DP

时间:2024-07-25 21:18:43浏览次数:14  
标签:插头 状态 轮廓线 分讨 我们 DP

插头DP

前言

今天学长讲了插头DP, 以前觉得他的模板就是黑题, 一定非常的难, 但是学习了之后发现它其实挺好理解, 但是难度该黑。

鉴于水品有限, 只简短的说一说, 给自己梳理一下思路。

算法

我们从模板题的弱化版开始讲:

P5074 Eat the Trees

我们发现要是闭合回路, 这只能老老实实状压, 不然没法让它合法, 更别说转移求方案数了, 但是这个线有很复杂, 可能可以压, 但是转移就需要巨复杂的分讨, 我们就不想了。 这时候就有两个巨牛的东西具有很好的性质, 可以很轻松的转移并且状态相对较少。

轮廓线和插头

就是我们维护这一排格子的轮廓线, 如图(from OI-wiki):

image

我们将所有拐角往前推进, 然后枚举其所有状态, 我们在拐角处分讨推出下一个状态。

插头就是经过轮廓线的线, 也就是还没闭合的线, 就是支出来的线头, 可知我们轮廓线的每个位置只有两个状态, 这样子状态数就下来, 专一的话分讨也少了。

P5056 【模板】插头 DP

考虑只能有一个闭合回路, 所以我们的状态和转移就要保证只能有一个, 并且要只根据状态即可判断, 因为统计的是方案数, 我们的判定只能依据DP数组里面有的状态, 那我们可以考虑将插头定义为两种, 左插头和右插头, 只有在最后一个位置, 才能将左插头和右插头拼上, 那么分讨转移即可。

考虑为了方便我们用四进制来写, 三进制也可以, 但是四进制状态太多, 我们存不下, 可以拿个哈希表存储有用的状态, 也就是上一行推出的状态开个哈希表存起来, 这样子就是 \(O(3^12)\) 个状态。

标签:插头,状态,轮廓线,分讨,我们,DP
From: https://www.cnblogs.com/qerrj/p/18324147

相关文章

  • 从DDPM到DDIM(三) DDPM的训练与推理
    从DDPM到DDIM(三)DDPM的训练与推理前情回顾首先还是回顾一下之前讨论的成果。扩散模型的结构和各个概率模型的意义。下图展示了DDPM的双向马尔可夫模型。其中\(\mathbf{x}_T\)代表纯高斯噪声,\(\mathbf{x}_t,0<t<T\)代表中间的隐变量,\(\mathbf{x}_0\)代表生成的图像......
  • react18+antdPro可编辑表格的使用和数据联动
    在项目中经常会遇到这样的需求表格数据是需要编辑的而且有联动的需求,比如结论是单选形式选了存疑的才能选存疑类型然后会在上面tag显示对应的人数存疑>0人就显红,符合要求小于总数就显红而且选择为符合要求后还要清空存疑类型在vue中这很好实现得益于v-model......
  • 【2024-ZR-C Day 8】动态规划(2):状压 DP、数位 DP
    【2024-ZR-CDay8】动态规划(2)1.状压DP1.1.子集枚举for(ints=m;s;s=(s-1)&m);1.2.状态压缩1.2.1.快速高维前缀和对于一个\(k\)维数组,设每维的大小分别为\((m_1,m_2,\cdots,m_k)\),要访问的位置为\((i_1,i_2,\cdots,i_k)\),则用\((\cdots(i_1\c......
  • LG3107 [USACO14OPEN] Odometer S 题解 (数位DP+容斥)
    题意定义一个数是神奇的当且仅当这个数中有一个数位出现了一半及以上,比如112,2233。求\([l,r]\)中有多少个好的数字,\(100\lel,r\le10^{18}\)。题解考虑数位DP,先把答案转为\(Ans(r)-Ans(l-1)\),我们钦定一个数\(k\)让他必须出现多于一半,然后我们想求\([1,x]\)中有多少......
  • 线性DP-方格取数与传纸条
    方格取数题目链接:方格取数题解:一种容易想到的思路是:采用贪心法对第一次和第二次行走分别做DP,将两次DP的最优解累加即为答案。但是这种贪心是错误的,因为两次DP均为对局部求最优解(第二次DP是在第一次DP的影响下求出的局部最优解),这两次DP的结果之和不为全局最优解(不满足无后效性),例......
  • DFS和DP--过河卒
    题目描述:棋盘上 A 点有一个过河卒,需要走到目标 ......
  • .NET TCP、UDP、Socket、WebSocket
    做.NET应用开发肯定会用到网络通信,而进程间通信是客户端开发使用频率较高的场景。进程间通信方式主要有命名管道、消息队列、共享内存、Socket通信,个人使用最多的是Sokcet相关。而Socket也有很多使用方式,Socket、WebSocket、TcpClient、UdpClient,是不是很多?HttpClient与TcpClien......
  • 高 DPI 下的 PyPlot 绘图更大,但仍然模糊
    我正在按照教程生成点的散点图,按簇着色,并根据每个点在其各自簇中的成员资格强度进行颜色饱和。我提到了着色细节,以防它们影响分辨率,但我怀疑它们不会。我发现,如果我增加PyPlot图形的DPI,图形的大小会增加,但仍然非常模糊。下面是我的测试代码,它生成一个小DPI数字和一......
  • 树形 dp 学习笔记
    状态设计基本上每一种dp都有一种标准的dp定义方式,树形dp也是如此:定义\(f[u]\)表示以\(u\)为根节点的子树里最优的决策。从分析子树入手,转移便是找到某一子树中,根节点与各子树、边权间的递推关系。最优解常常是关于根节点的函数。它的子结构是一颗子树。实现方式......
  • 状态压缩 dp
    \(\texttt{0x00}\):概念状压DP是动态规划的一种,通过将状态压缩为整数来达到优化转移的目的。$\text{----OIWiki}$简单说来,就是我们通过普通的状态表示无法直接推出状态转移方程了,这时候将当前状态拓展的“轮廓”作为状态表示的一维,而考虑到空间复杂度和计算机原理,主要使用二......