![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
Alstein
十年oi一场空,不开longlong见祖宗
展开
-
CF1139D step to one(数论+概率dp)
原题地址题意:给一个数m和一个空数组a,每次可以选1~m中任意一个数加入到a中,求最后a数组中所有数的gcd为1时的期望长度;令dp[i] 表示当前数组的gcd为i时,还期望添加dp[i]个数使得所有数的gcd为1;那么初始条件dp[1] = 0;状态转移公式:解释一下,1表示添一个数;求和表示从1~m中选一个数加入数组,期望是dp[gcd(i,j)],选到的概率是1/m。直接做复杂度O(m^2),过不了,所以要优化,观察这个式子,gcd(i,j)肯定会出现重复项,比如,当i=4时,j=6和j=8都原创 2020-06-12 22:19:51 · 193 阅读 · 0 评论 -
poj2411,Mondriaan's Dream(状压dp)
题意:计算用给定的1*2的方块填满高为h,宽为w的矩阵的方案数.这题想了个dp[i][j]表示枚举到第i行时且第i行之前的都填满时,第i行的状态为j,但是无奈我想转移的时候卡住了,然后看题解,发现什么兼容模式有点看不懂,后来找到了一篇和我dp数组一样的博客,从中学到了状态转移方式(博主叫银之夏雪,也是参考kuangbin的博客)我思考的时候,把放方块假想为涂颜色,那么每次涂肯定是两格(横着或者...原创 2020-01-10 11:00:14 · 216 阅读 · 1 评论 -
树形dp小结,入门
今天树形dp学习了一下,整个总结,虽然以前就小看过,但差不多忘完了,唯一记得就是:树形dp嘛,就是在树上的dp,这讲得超级形象。对于状态方程,目前做题碰到了两类:一维:直接dp[i],维护一个以i为根时的最优状态。二维:dp[i][j],表示以I为根时,决策是j时的最优状态。这其中也接触了一点树的性质一,树的重心:当去掉树中重心这个点后,所剩的所有子树节点的数量中的最大值s,比去掉树中其...原创 2020-01-07 21:01:02 · 179 阅读 · 0 评论 -
区间dp(Pangu and Stones)
题意:给n堆石头,标号为1到n,每堆石头有一定的个数,每次可以选择[L,R]中任意一个数那么多堆来合并,每次合并的花费是合并后石头的的总个数,求花费的最小值思路:dp[i][j][p]代表把区间[i,j]的石头分成p堆的最小花费,所以对于i到j这段区间,我们枚举中间的断点k,可以把区间分成 i 到 k 和 k+1 到 j 两个区间,把 i 到 j 分成 p 堆的最小花费,就相当于把 i 到 k ...原创 2020-01-07 20:30:15 · 140 阅读 · 0 评论 -
LIS,LCS,LCIS
LIS(最长上升子序列),LCS(最长公共子序列)是动态规划中基础的两个问题,今天连同他们的联合版LCIS一起总结一下。LIS(最长上升子序列):有两种方法,一种DP(n*n),还有一种解法复杂度是贪心+二分(nlogn)法一://dp[i]表示以i结尾的最长上升子序列for(int i=1;i<=n;i++){ dp[i]=1; for(int j=1;j<...原创 2019-12-18 22:16:08 · 225 阅读 · 0 评论 -
初识状压dp
状压dp就是用一个集合来表示状态的DP,可以优化时间复杂度,而这个集合就是我们的二进制数,每一位二进制有0和1两种状态,可以表示用或者不用 等对立的状态,所以学习状压dp的时候还需要了解位运算的知识比较常用的位运算if(i >> j & 1) {};//判断i的第j位上是不是1i - (1 << j); //在i的二进制表示中第j位是1的条件下,减去i的...原创 2019-12-16 21:34:34 · 135 阅读 · 0 评论 -
分组背包,混合背包,有依赖的背包
一.分组背包所谓分组背包,就是把物品分成n组,每组里面m个物品,从这n组中每组选一个物品,使得在背包体积是V的条件下价值最大;思路:对于每一组由于只能选一个,所以就是决策这一组中选哪一个获得的价值最大;for(int i=1;i<=n;i++){ }...原创 2019-12-13 23:06:10 · 380 阅读 · 0 评论 -
dp(路径字典序输出)
今天做了一道01背包加最小字典序输出的问题,就稍微总结一下然后说些理解,如果有错还望大神指出。题目地址戳这里路径的存储有两种方法,一种是用path二维数组记录一下路径,另一种是直接根据dp数组逆着找回去.第一种方法:优化后和没优化的dp数组都可以使用,而且找回去的时候就是字典序最小的方案。第二种方法:只能用于没有优化后的dp数组,一维存的信息不够.(因为一维边存边丢.)这种时候找回去是字典...原创 2019-08-01 18:59:12 · 929 阅读 · 0 评论