随笔分类 - dp
摘要:这个题的n<15,一看就是状压dp。但是状态不是很好想。f[][]存i关的状态j。 这个题另一个关键思想在于倒推,我一开始想的是正推,但是只能记忆化了。 题干: 代码:
阅读全文
摘要:这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了。 题干: 代码:
阅读全文
摘要:其实说是概率dp,本质上和dp没什么区别,就是把所有可能转移的情况全枚举一下就行了,不过dp方程确实有点长。。。 ps:这个题的floyed我竟然之前写跪了。。。 题目: 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。 在可以选择的课程中,有 2n2n2n 节
阅读全文
摘要:这个题当时划水,得了二十分,现在来整一整。 这个题用状压来压缩边界线,然后通过记忆化搜索进行dp。我们可以观察到,其实每次转移,就是把一个1向左移一位。最后的状态设为0。 这其中还要有一个变量来记录谁下棋,用maxmin算法,其实就是一步取max,下一步取min,然后就木有了。 ps:a-b剪枝没学
阅读全文
摘要:这个题其实打眼一看就知道差不多是dp,而且基本确定是前缀和。然后硬钢就行了。。。直接暴力预处理前缀和,然后直接dp就行。 题干: 代码:
阅读全文
摘要:我刚开始,我打眼一看:哇!网络流大水题,直接费用流板子,建边跟zz一样。结果看了一眼数据范围。。。gg,luogu上只能得30,直接建边就是n^2,1e5根本过不了。咋办,只能另谋出路。想不出来,看题解之后恍然大悟!!!woc,还有这样一句话: 惊了,但是还是不会,然后就有这样一个显而易见的东西:a
阅读全文
摘要:这个题和我一开始想的区别不是很大,但是要我独自做出来还是有一些难度。 每一次涂色 只有这两种可能: 1) 把一段未被 覆盖过的区间 涂成 * 色 2) 把一段被一种颜色覆盖的区间涂成 * 色 (并且 涂色区间 的两端 同为 被覆盖区间的颜色, 不然就是第一种了) 这种 dp 都要 存一个 f[i][
阅读全文
摘要:这个题的dp真的恶心。首先,一开始我以为是一道数论题,但是组合数和这个题没啥关系。dp方程巨麻烦,状态是dp[i][j][0/1],代表i位连了j个,上一位是否连着。然后开始转移,证明如下: 我们先来分析i-1,i相邻,也就是f[i][j][1]怎么推。 对于i,i-1,i-2,有这几种关系, 本来
阅读全文
摘要:发现是状压dp,但是还是不会。。。之前都白学了,本蒟蒻怎么这么菜,怎么都学不会啊。。。 其实我位运算基础太差了,所以状压学的不好。 题干: 代码:
阅读全文
摘要:这个题的原始方法谁都会,但是n^3会T。之后直接优化,特别简单,就是每次处理出来每层的最大值,而不用枚举。之前没这么做是因为觉得在同一棵树的时候没有下落,所以不能用这个方法。后来想明白了,在同一棵树上的时候,一步步爬一定好于跳跃。然后就没什么了。 题干: 代码:
阅读全文
摘要:这个题有点意思,一开始没想到用dp,没啥思路,后来看题解才恍然大悟:k才1~100,直接枚举每个-1点的k取值进行dp就行了。先预处理出来sz[i][j] i左边的比j大的数,lz[i][j] i右边比j小的数。然后就没啥了。 题干: Description Input Output Sample
阅读全文
摘要:这个dp其实不是那么难,状态其实很好想,但是细节有少许偏差。 当时我并没有想到最短路要在dp之外写,后来看题解之后发现要预处理出来每段时间1~M的最短路,然后直接dp。 题目: 代码:
阅读全文
摘要:其实很早之前就学过树形dp,今天总接一下。树形dp就是一个在树上跑的dp(滑稽) 先是一道板子题:树上最大独立集 直接上代码了。 然后还有几个稍微比这个难一点的题,比如:加分二叉树 这个题需要枚举中间的断点,然后进行dp。dp比之前简单了,但是其他的要难一些。 还有一个皇宫看守,和最大独立点集很像
阅读全文
摘要:今天模拟,状压dp又没写出来。。。还是不会啊,所以今天搞一下这个状压dp。这里有一道状压dp的板子题: Corn Fields Corn Fields 就是一道很简单的状压裸题,但是要每次用一个二进制数表示一行的状态。 附加一个关于位运算的总结: 上题干: 题目不用多解释,直接上代码,写注释了,很好
阅读全文
摘要:状压dp,就是把动态规划之中的一个个状态用二进制表示,主要运用位运算。 这里有一道例题:蓝书P639猛兽军团1 [SCOI2005]互不侵犯 题目: 直接上代码,注释很详细 上面这个代码过于复杂,不好理解,我们换一种写法:
阅读全文
摘要:今天写内网题,连着写了两道区间dp,这里就总结一下。 区间dp思想主要是先枚举f[i][j]中的i,再枚举j,再枚举一个1~j之间的变量k,一般是f[i][j] = max(f[i][j],f[i][k] + f[k][j]);(石子合并) 但是今天遇到的两个都不是这样的。 第一题,复制书稿,洛谷P
阅读全文
摘要:最长公共子序列,顾名思义当然是求两个字符串的最长公共子序列啦,当然,这只是一道非常菜的动规,所以直接附上代码: 而最长回文子序列和第一道题有什么关系呢?答案其实很简单,只要把原来的字符串倒着保存一遍,然后进行第一题的比较就可以了,代码如下: 有了第二题的启发,最长上升和下降子序列也很好想了,就是把所
阅读全文

浙公网安备 33010602011771号