dp--状压dp
1
长沙大学ccsu_deer
这个作者很懒,什么都没留下…
展开
-
状态压缩DP poj2411 矩形填充木块问题
参考博客:博客从某场笔试遇到的题,群里太多人改网上代码只能对60%。我是100% 特地记录下。分析:首先我们定义如下这种填充表示方式:如果一个骨牌是横着放的,那么它所在的两个方格都填充0.如果它是竖着放的,那么它所在的两个格子中,上面的那个填1,下面的这个填0.如下图所示:图来自:博客 右边的图 0 和 1互换就好了。1、每一行的 每两位 不能出现01的情况,非法,最后一位不能是单独的0#include<iostream>#include<alg...原创 2020-10-11 16:35:08 · 705 阅读 · 0 评论 -
最短哈密顿路径 (状压DP)
题意:给一副n个点的无向图(完全图),求从点0到n-1的最短哈密顿路径思路:状压DP入门题,这题的子问题其实是每个点的使用状况,这种集合类的DP一般都是状压DP,所以我们用dp[i][j]表示当前在第i个点的时候,所有的点的使用状况,先枚举状态,然后枚举当前的点,再在剩下的点中枚举尚未使用过的点,复杂度O(n^2 * 2^n)#include<iostream>#include<cstdio>#include<cstring>using namesp.转载 2020-06-15 23:19:06 · 806 阅读 · 0 评论 -
蒜头君分玩具(状压dp)
题目链接对n个玩具状压一下就可以了。#include<bits/stdc++.h>#define rep(i,a,b) for(int i=a;i<=(b);++i)#define mem(a,x) memset(a,x,sizeof(a))#define pb push_back#define pi pair<int, int>#define mk make_pairusing namespace std;typedef long long l原创 2020-05-21 21:36:37 · 757 阅读 · 0 评论 -
CodeCraft-20 (Div. 2)(C(本原多项式) D (BFS) E (状压+dp))
题目链接C. Primitive Primes题意:给定两个多项式 相乘得到h(x)的多项式,求h多项式中某个系数不能p整除,输出这个系数的位置做法:什么是本原多项式?献上百度百科只能说这个题跟本源多项式的定义很像,本原多项式保证了一定有解,由于做法就是 两个多项式第一个系数不被mod整除的位置加起来,因为如果前面都能呗mod整除,第n+m这个位置的卷积都是从前面卷...原创 2020-03-05 13:44:29 · 554 阅读 · 0 评论 -
牛客OI周赛14-提高组(A 容斥 计数,B状压dp)
题目链接A-魔改森林题意:不知道没有障碍的时候怎么计算总和,于是看了一眼官方题解:所以容斥怎么去搞? 懵了,于是看别人的代码学的,就当学习了:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=998244353,N=2e5+5;ll f[N]...原创 2020-03-11 21:21:06 · 380 阅读 · 0 评论 -
牛客小白月赛22 D-收集纸片(状压dp)
题目链接D-收集纸片状压dp水题:参考 旅行商问题打到一半吃饭去了,回来就被这个状压dp 卡了,赛后百度别人的板子才过的,所以特地保存下正确的板子#include<iostream>using namespace std; int dp[65540][20];int mp[20][20]; int dis(int x0,int y0,int x1,int ...原创 2020-02-23 12:51:42 · 368 阅读 · 0 评论 -
B-筱玛爱阅读(状压dp)
题目链接如何输入价格顺序是不变就是比较简单的状压dp,可是它这个价格是可以改变顺序的。可能稍微就有点难想参考题解cnt[i]记录i在二进制下有几个1,用dp预处理;把打折方案按位压到二进制里,状压dp套路枚举状态i,考虑i的子集j,如果j的补集x==i^j存在打折方案,那么由于dp[j]已经选择了从大到小的第cnt[j]本书,x只能去选从大到小的第cnt...原创 2020-02-10 21:09:52 · 518 阅读 · 0 评论 -
Educational Codeforces Round 80 (Rated for Div. 2) D. Minimax Problem(二分+状压dp判断)
题目链接学习题解这种状压题 cf 之前出过:Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse题意很好懂,由于是求最小值最大 于是二分这个最小值最大。然后将a[i][j] 数组没一行变成一个整数,方法:a[i][j] 大于 mid s[i]整数二进制上第j位就是1若任意两个整数的异或值等于...原创 2020-01-15 20:59:25 · 378 阅读 · 0 评论 -
Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse(状压dp)
题目链接题解学习来自前队友状压dp,很妙的做法。类似的做法另一题:Educational Codeforces Round 80 (Rated for Div. 2) D. Minimax Problem我们从1开始预处理所有不重复的子串,然后枚举两个子串求最大长度,这样做时间复杂明显过不去,于是采用状压dp降低复杂度。比较的难以理解就是子集这里,由于迭代的原因,所以只需要把i...原创 2020-01-15 20:52:06 · 323 阅读 · 0 评论 -
E(2211): Assemble(类状压dp)
DescriptionXrdog准备组装一台属于他自己的电脑。具体来说是这样子的,组装这台电脑需要n个部件(显卡,CPU,硬盘....),每种部件均有k个品牌的产品,不同的产品会有一个性能值来衡量它的性能。Xrdog现在要选择n个产品来组装成他的电脑,这n个产品分别是不同的部件(换言之就是要从每种部件中选择一个),我们定义这台电脑的最终性能值为选择的n个产品的性能值的乘积。现在Xrdo...原创 2019-01-17 18:15:07 · 335 阅读 · 0 评论 -
状态压缩dp简(入门)
以下是我对这位大佬博客的理解,把题目链接拷过来了状态压缩动态规划,就是我们俗称的状压DP,是利用计算机二进制的性质来描述状态的一种DP方式很多棋盘问题都运用到了状压,同时,状压也很经常和BFS及DP连用,有了状态,DP就比较容易了总之就是二进制数代表一个状态,每位数上的1,0,代表着一个物品当前的状态例题:位运算例题(结合BFS):P2622 关灯问题II题目:https:...原创 2019-01-17 20:09:58 · 634 阅读 · 0 评论