![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划-状态压缩DP
文章平均质量分 91
Maxwei_wzj
AFO
展开
-
(2021-3-19编写)【CSP202012-04】食材运输-状压DP+树形DP
测试地址:食材运输题目大意: n(n≤100)n(n\le 100)n(n≤100)个节点的树,有边权。每个点有的需求,一共可能有K(K≤10)K(K\le 10)K(K≤10)种需求,每个点也可以有多种需求。对于每种需求,需要派遣一个(且只能派遣一个)交通工具,从某点开始,顺着树边遍历所有有这种需求的点,从而满足这些点的需求,边权就是通过这条边所需的时间。现在要求安排M(M≤K)M(M\le K)M(M≤K)个点,使得当所有KKK个交通工具同时从这MMM个点中的某些点出发后,等待需求被满足的时间最长的点原创 2021-03-20 00:47:24 · 1096 阅读 · 1 评论 -
【BZOJ2734】集合选数(HNOI2012)-状压DP
测试地址:集合选数 做法:本题需要用到状压DP。 看到这种两个东西不能同时取的限制,显然就是个独立集,然而这题并不只是要求独立集,而是要求独立集的数量,所以我们就要观察这个图到底有什么性质。 注意到,一个点xxx会和2x2x2x和3x3x3x连边,于是我们发现点xxx可以走到形如2p3qx2p3qx2^p3^qx这样的点,每一对(p,q)(p,q)(p,q)和一个点一一对应,而从(p,q)(...原创 2018-06-11 20:24:30 · 241 阅读 · 0 评论 -
【BZOJ4416】阶乘字符串(SHOI2013)-状压DP
测试地址:阶乘字符串 做法:本题需要用到状压DP。 首先,根据证明(直觉),满足条件的字符串的最小长度仅仅比n2n2n^2小一点点,因此当n>21n>21n>21时,直接输出NO即可。 于是我们就把nnn缩减到了212121的范围,就可以考虑状压了。令f(i)f(i)f(i)为包含集合iii的所有全排列的最短前缀,而nxt(i,j)nxt(i,j)nxt(i,j)为第iii个字符...原创 2018-06-23 11:24:56 · 261 阅读 · 0 评论 -
【BZOJ3925】地震后的幻想乡(ZJOI2015)-概率期望+子集状压DP
测试地址:地震后的幻想乡 做法:本题需要用到概率期望+子集状压DP。 题目要求最小生成树最大边的期望,我们知道这个值等于最大边的期望排名(从小到大)/(m+1)/(m+1)/(m+1),因为提示里说了,mmm个[0,1][0,1][0,1]内的随机变量的第kkk小值的期望为km+1km+1\frac{k}{m+1}。 那么令LLL为最大边的排名,则有: ans=E[L]m+1=1m+1∑m...原创 2018-06-24 20:57:50 · 206 阅读 · 0 评论 -
【BZOJ3590】Quare(SNOI2013)-状压DP
测试地址:Quare 题目大意:给定一张无向图,有n(≤12)n(≤12)n(\le 12)个点和m(≤40)m(≤40)m(\le 40)条边,要从里面选出一个边权和最小的包含所有点的边双连通子图,求最小的边权和。 做法:本题需要使用状压DP。 注意到,每一个边双连通分量都可以通过删边成为一个环,而边权都是非负的,所以最优解一定是许多个环接在一起,因此我们可以用一个边双连通分量加上一条链构...原创 2018-06-09 23:52:22 · 315 阅读 · 0 评论 -
【51Nod1623】完美消除-数位DP+状态压缩+单调栈
测试地址:完美消除做法: 本题需要用到数位DP+状态压缩+单调栈。对于一个数字,如何求出它的最小消除次数?把每一位一一推入单调栈(栈顶元素最大),并在最后把所有的元素都出栈,那么元素出栈的总次数就是最小消除次数。这一点做过单调栈题的同学应该很容易能看出来了。那么对于这一题,显然看出是数位DP,而且数位DP也是从高位到低位转移。我们又发现数位只有000 ~ 999这101010个数字,于是我们...原创 2018-10-31 12:03:00 · 247 阅读 · 0 评论 -
【BZOJ1494】生成树计数(NOI2007)-连通性状压DP+矩阵加速
测试地址:生成树计数 做法:本题需要用到连通性状压DP+矩阵加速。 假设图是从左到右不断添加点的,那么每添加一个点,影响到的只有最后kkk个点的连通性,所以不难想到以最后kkk个点的连通性作为状态进行DP。所谓的连通性,就是将这kkk个点分为若干个集合,相同集合内的点就是连通的,不同集合内的点就不连通,不难发现合法的状态数只有B(k)B(k)B(k),即第kkk个Bell数,而Bell数就是k...原创 2018-05-08 14:57:05 · 288 阅读 · 0 评论 -
【BZOJ4197】寿司晚宴(NOI2015)-状压DP+数论
测试地址:寿司晚宴 做法:本题需要用到状压DP+数论。 考虑nnn小一点的情况,我们发现题目条件等价于两个人所选的数的质因子集合不相交,那么我们令f(i,j,k)f(i,j,k)f(i,j,k)为考虑了前iii个数,其中第一个人取的数的质因子集合为jjj,第二个人取的数的质因子集合为kkk的方案数,状态转移方程应该很好写了,详见代码,用枚举子集的技巧就可以做到O(n3p(n))O(n3p(n)...原创 2018-05-07 20:46:59 · 213 阅读 · 0 评论 -
【HDU3311】Dig The Wells-状压DP+SPFA:斯坦纳树
测试地址:Dig The Wells 题目大意:有nnn个寺庙和mmm个其他地点,每个寺庙或者地点都可以挖井,现在要修建一些道路,使得每一个寺庙都至少与一个井连通,挖井和修路都需要费用,求最小费用。 做法:本题需要用到状压DP+SPFA。 什么是斯坦纳树?在一个图中,连通一个关键点集并使得所选边权和最小的边集构成一棵树,这就是斯坦纳树。 斯坦纳树可以这样求:令dp(i,state)dp(i...原创 2018-05-07 11:16:30 · 233 阅读 · 0 评论 -
【HDU1693】Eat the Trees-插头DP
【HDU1693】Eat the Trees-插头DP原创 2017-03-26 17:06:42 · 401 阅读 · 0 评论 -
【HDU3681】Prison Break-状态压缩DP+BFS+二分答案
【HDU3681】Prison Break-状态压缩DP+BFS+二分答案原创 2017-09-14 22:30:40 · 388 阅读 · 0 评论 -
【HDU4336】Card Collector-状态压缩DP+期望DP
【HDU4336】Card Collector-状态压缩DP+期望DP原创 2017-09-22 16:40:19 · 267 阅读 · 0 评论 -
【HDU4778】Gems Fight!-状态压缩DP+博弈
【HDU4778】Gems Fight!-状态压缩DP+博弈原创 2017-09-20 17:40:32 · 379 阅读 · 0 评论 -
【BZOJ1076】奖励关(SCOI2008)-状压DP+期望
测试地址:奖励关 做法:本题需要用到状压DP+期望。 首先,在某个时刻掉落了某个宝物,我们是捡还是不捡呢?按照平均情况下最优,也就是期望得分最大,那肯定是按照捡和不捡两种决策做出后,哪个会使期望得分更大而定。具体来说,我们令f(i,j)f(i,j)f(i,j)为从第iii轮开始,已经获得的宝物集合为jjj,能得到的最大期望得分,那么我们有以下状态转移方程: 对于每种可能掉落的宝物nownow...原创 2018-04-07 18:32:40 · 220 阅读 · 0 评论 -
【HDU6086】Rikka with String-AC自动机+状压DP
测试地址:Rikka with String 题目大意:给定nnn个010101串,问有多少长为2m2m2m的反对称010101串包含这nnn个串作为子串。一个串反对称当且仅当对于每个字符si(1≤i≤|s|)si(1≤i≤|s|)s_i(1\le i\le |s|)都有si≠s|s|−i+1si≠s|s|−i+1s_i\ne s_{|s|-i+1}。 做法:本题需要用到AC自动机+状压DP。...原创 2018-04-03 19:26:30 · 277 阅读 · 0 评论 -
【BZOJ5248】一双木棋(多省联考2018)-状压DP/轮廓线DP
测试地址:一双木棋 做法:本题需要用到状压DP/轮廓线DP。 注意到决策仅仅和当前的局面(即轮廓线)有关,而和之前的具体决策无关,因此我们令f(state)f(state)f(state)为轮廓线状态为statestatestate时,当前要下的棋手能获得的和对手的最大分数差是多少。 观察到无论何时,轮廓线的形态从下到上看,都是要么向上走,要么向右走,也就是一种单调的形态。因此我们获得了一种...原创 2018-04-24 15:26:02 · 434 阅读 · 0 评论 -
【BZOJ1495】网络收费(NOI2006)-树形DP+状压DP
测试地址:网络收费 做法:本题需要用到树形DP+状压DP。 因为成对的贡献比较难做,我们尝试把贡献算到每一个叶子节点上。我们发现按照题目中的收费方式,它等价于对于每棵子树,A和B哪个更少,就统计这样的贡献:对于每个这种用户iii,如果i,ji,ji,j的LCA是当前子树的根,则累计F(i,j)F(i,j)F(i,j)。为什么等价呢?因为观察计费形式,假设A更少,那么对所有满足LCA为当前根的点...原创 2018-05-09 10:49:45 · 326 阅读 · 0 评论 -
【LuoguP3959】宝藏(NOIP2017)-状压DP:枚举子集
测试地址:宝藏 做法:本题需要用到状压DP。 令dp(i,j)dp(i,j)dp(i,j)为深度为iii,已开发的屋子状态为jjj的最小花费,那么我们枚举和jjj不相交的集合kkk,可以这样转移状态: dp(i+1,j+k)=min(dp(i+1,j+k),dp(i,j)+dis(j,k)×(i+1))dp(i+1,j+k)=min(dp(i+1,j+k),dp(i,j)+dis(j,k)×...原创 2018-05-06 21:57:28 · 409 阅读 · 0 评论 -
【POJ2411】Mondriaan's Dream-状态压缩DP(插头DP?)
【POJ2411】Mondriaan's Dream-状态压缩DP(插头DP?)原创 2017-03-20 17:46:55 · 586 阅读 · 0 评论