![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划·线性DP
pigzhouyb
一个来自浙江的可爱的萌萌哒的肥肥胖胖的OIer
展开
-
『动态规划』数位问题
Problem\mathrm{Problem}ProblemSolution\mathrm{Solution}Solution首先每一个数字都要先用上,关键在于如何分配奇偶的问题。我们可以用DP来解决问题,设f[i][j][k]f[i][j][k]f[i][j][k]表示前iii个数,(奇数位-偶数位)%11=j,k\%11=j,k%11=j,k个数字为奇数位是否可行。那么就有:f[i]...原创 2019-10-21 18:49:21 · 241 阅读 · 1 评论 -
『动态规划优化』优化
题目描述现在有一个长度为N的整数序列{ai}\{a_i\}{ai} ,你需要从中选出KKK个不相交的连续子区间(可以存在元素不被选),从左到右记它们的和为s1,s2,...,sks1,s2,...,sks1,s2,...,sk。我们的优化目标是最大化下述和式:∑i=1k∣si−si+1∣\sum_{i=1}^{k} |s_i-s_{i+1}|i=1∑k∣si−si+1∣你只需要输出这...原创 2019-08-26 14:50:12 · 218 阅读 · 0 评论 -
『树形DP』计数
题目描述题解涉及到前序遍历,中序遍历方面一定可以得到一个特性,即:一棵子树一定是一个连续的区间。这里的限制只是为了保证转移的合法性,我们设f[i][j]f[i][j]f[i][j]表示前序遍历中对区间[i,j]作为一棵树的方案数。我们如何判断转移的合法性呢?如果不存在iii连向[j+1,r][j+1,r][j+1,r]的边,说明不存在右子树,可以累加答案。反之如果不存在[j+1,r...原创 2019-08-26 20:39:33 · 164 阅读 · 0 评论 -
『动态规划·单调队列优化·贪心』BZOJ1233:干草堆
Problem\mathrm{Problem}ProblemSolution\mathrm {Solution}Solution对于这道题,我们首先需要知道一个贪心的结论:如果要使最后的干草堆尽量高,最小面的那一堆一定要尽量小 。但是知道了这个结论,我们仍然无法知道具体的叠的方案是怎么样的,我们考虑动态规划。我们可以将数组翻转,求前缀和,自底向上DP。设f[i]f[i]f[i]表示...原创 2019-08-27 12:02:44 · 191 阅读 · 0 评论 -
『单调队列优化DP』股票交易
Problem\mathrm{Problem}ProblemSolution\mathrm{Solution}Solution设f[i][j]表示前i天拥有j个股票的拥有的最多的前。显然有如下几种情况:如果当前不进出股票f[i][j]=max(f[i][j],f[i−1][j])f[i][j]=\max (f[i][j],f[i-1][j])f[i][j]=max(f[i][j],...原创 2019-08-27 17:44:53 · 127 阅读 · 0 评论 -
『差分思想』BZOJ3003:LED
Problem\mathrm {Problem}ProblemLED屏是由一个庞大的点阵小灯泡组成的,一开始每个小灯泡都不发光。每一行一共有N个小灯泡,依次标号为1~n。现在给定K个点,要求这K个点发光,其余点必须保持熄灭状态。而这块LED屏的操作方式各种奇葩,一共有L种操作方法,第i种表示你能将任意长度恰为A_i的连续一段灯泡的状态取反(灭变亮,亮变灭)。已知LED屏一共有m行,为了节省...原创 2019-09-02 08:17:27 · 238 阅读 · 0 评论 -
『线段树+矩阵优化DP』CF750E New Year and Old Subsequence
Problem\mathrm{Problem}ProblemSolution\mathrm{Solution}Solution我们首先需要考虑一个O(n2)O(n^2)O(n2)的做法.在这里有一个序列自动机的思想,分别是2,0,1,8,92,0,1,8,92,0,1,8,9.我们设f[i][0/1/2/3/4/5]f[i][0/1/2/3/4/5]f[i][0/1/2/3/4/5]表示...原创 2019-09-10 19:25:00 · 247 阅读 · 1 评论 -
『DP·玄学优化』n盘m柱的汉诺塔问题
Solution\mathrm{Solution}Solution我们设f[i][j]f[i][j]f[i][j]表示前iii个柱子,jjj个盘子的最少覆盖次数。很显然有状态转移方程:f[i][j]=min1≤k<j(2×f[i][k]+f[i−1][j−k])f[i][j]=\min_{1\le k<j}(2\times f[i][k]+f[i-1][j-k])f[i][j]=...原创 2019-09-29 21:42:59 · 516 阅读 · 0 评论