![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 75
7_26
我很勤劳,还没有添加简介
展开
-
决策单调性&斜率&单调队列优化DP
毒瘤DP,DP里面最难写的。 P1912 最经典题目了属于是。 其实就是一个决策单调性板子题,因为年代久远所以比较难码出来。 关键就是找准最优子结构,我觉得这种都可以划一个模型,数列优化模型,都这么搞; ...原创 2022-02-13 15:31:38 · 314 阅读 · 1 评论 -
数据结构优化DP
P2605 这题真的好难呀,连最基本的DP方式都没有想出来; 看题解了之后才做出来; 这里没有内容可以多说了,看洛谷吧; BZOJ3688 终于有一道水题了;TWT 太水了,以至于他完全符合模型,就是这样吧; ...原创 2022-02-11 13:56:55 · 613 阅读 · 0 评论 -
期望概率DP
BZOJ2201 题面很难找,找了半天才找到一张图。 题目很别致,我们发现,期望DP的题目一般来说都要根据题目所给的东西来定制一种做法? 本题中,那个贡献值的定义是连乘出来的,那么。。。。。如果说要计算贡献,那么就只能用乘法分配率。 对于已经确定下来的一段,我们用一个状态代表一个集合,因为m的值实在是太大了,不可能设计出一种状态; 也就是说这个集合大约是这样的 { aaaavbdsad dasdsadasd dasdsadsad dasdsaddsd } 结尾有着相同的段子,这样子就可以了; 然后链状的这题原创 2022-02-10 16:17:46 · 214 阅读 · 0 评论 -
状态机模型DP
这个模型是Y总发现的; 很妙啊; 状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。 比如这张图就是一个很典型的状态机的模型; 因为DP是一个在DAG里面用topo序来递推的这么一个过程,因此我们可以用状态机来帮我们确定topo序; 注意点就是最后的终态和初始化; 步骤如下: 首先设计状态,把几个状态画出来,作为节点 然后我们考虑这几个节点之间有什么逻辑关系 并依据此给它们之间加上有向边(还有自环) 之后给边加上权值 最后根据每个状态的入度写出状态转移方程 直接上题了; 黑虎原创 2021-06-29 12:52:10 · 492 阅读 · 4 评论 -
最长上升子序列和最长公共子序列的问题
最长上升子序列 原题题面我就不过多赘述了; 为什么说要那样子去列我们的状态表示和状态转移方程呢; 首先因为最后一个数不一定是最大的因此不一定是他结尾的; 而且呢因为我们要转移的话,必然是需要对已知情况进行判断的,如果说现在遍历到的那个数大于之前的某个数的时候才会更新一遍状态,所以我们要保留的是,当前结尾的那个数字; 这题仔细品一品就能品出来最优子结构并且带有相关信息,并且能转移的性质; 代码 acwing题解里面来的,懒得写了 #include <iostream> using namespac原创 2021-06-22 08:44:00 · 139 阅读 · 1 评论 -
数字三角形模型
没啥好说的去看Y总讲课就行了,这模型总共就那么点玩意儿。 只要搞清楚取数的时候从哪个方向过来的就行了。 唯一要注意的一个题目是方格取数 方格取数 注意点呢就是说这题不能用贪心去做 如果贪心HACK: 2 1 3 1 1 3 1 4 行吧就这么点东西; ...原创 2021-06-22 07:08:35 · 176 阅读 · 3 评论 -
记单调队列DP
单调队列DP 原理 比如说有这么几个数,每次划定一个长度为5的区间,求每次区间内的最大值 2 4 0 3 7 1 -4 6 第一次把2加进队列{2} 第二次{4},因为在有4的情况下,2是没用的 第三次{4,0} 第四次{4,3} 第五次{7} 第六次和以后{}。。。懒得写了 ...原创 2021-06-01 21:14:00 · 255 阅读 · 1 评论 -
记树形DP
树形DP 树形DP和线性DP的区别 在思维上,仅仅是迭代关系由线性转变成了非线性 比如说: 最大子段和 这题用f[i]表示以a[i]结尾的最大子串长度 最后只需要从1到N全部扫一遍求max即可 最大子树和 线性DP是线性的扫过一遍,最大子树和则是从叶子节点开始扫。 如果有儿子的话就在左和根,右和根,根,都有之间选一个,但是不能只有左右而没有根因为这样就不满足子树,对应到上面就是必须f[i-1]+a[i],a[i] 再考虑上面一层的时候就下面已经保证是选出来的最佳方案,满足无后效性所以是对的; ...原创 2021-05-27 21:50:39 · 263 阅读 · 1 评论