动态规划
dinlon
这个作者很懒,什么都没留下…
展开
-
#50. 【UR #3】链式反应(动态规划/生成函数/分治NTT/解微分方程)
#50. 【UR #3】链式反应https://vfleaking.blog.uoj.ac/blog/43https://www.cnblogs.com/Paul-Guderian/p/10487214.html对于一个n个节点的树,编号从1到n,要求每个点的编号小于儿子,并且有两类点,蓝点没有儿子,每个红点要么连接两个红点和若干蓝点,蓝点儿子的数量属于集合A,要么没有儿子。求解树的个数。我们考虑dp,dp[i]dp[i]dp[i]表示i个点的树的答案,然后有发现这是一个背包的形式,所以我们可以考原创 2021-03-03 21:27:00 · 69 阅读 · 0 评论 -
序列计数(动态规划/自动机/前缀和优化)
序列计数对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一,可以进行无限次这样的操作,求解可以产生多少种不同的序列。首先我们不能考虑操作,而是考虑合法序列,显然最后会形成若干个区间,然后每个区间必然是对应了最初的一个位置,并且需要满足位置的相对顺序不变,所以问题等价于统计本质不同的满足相邻字符不同的子序列个数,然后利用组合数直接计算。那么考虑动态规划,如果采用求子序列个数的dp,发现无法很好处理相邻字符不同,但是如果利用子序列自动机,就很好处理,这样dpi,jdp_{i,j}dpi,原创 2021-02-22 22:42:16 · 279 阅读 · 0 评论 -
CF623E Transforming Sequence(多项式/倍增fft/动态规划)
CF623E Transforming Sequence经典的倍增NTT题目,但是由于万恶的模数导致这道题变成了倍增MTT要求n个数前缀或严格递增的序列个数,一共有k位。然后我们考虑进行dp,然后我的思路就是fi,jf_{i,j}fi,j表示前i位在k位中有j位的方案数,然后可以利用组合数进行转移,但是这个状态设计不优秀,主要在于它包含了这j位在k位中哪些位置的信息,但是我们完全不需要,因为这j位和其他j位是完全等价的,我们本质上只需要考虑这j位,那么得到另一个状态设计gi,jg_{i,j}gi,j原创 2021-02-04 11:38:26 · 132 阅读 · 0 评论 -
[2021.1.13多校省选模拟2]T1(动态规划/轮廓线dp)
[2021.1.13多校省选模拟2]T1一个经典的轮廓线dp,可以发现一定可以找到一条轮廓将这个图形分开,然后使得左半部分由左边处理,右半部分由右边处理,然后我们只需要处理这个折线即可,具体实现需要处理前缀和的前缀最大值,然后每次选择最大值作为权值。...原创 2021-02-01 19:25:24 · 62 阅读 · 0 评论 -
A. [2021.1.31多校省选模拟12]字符串计数(字符串理论/border/容斥原理/动态规划)
A. [2021.1.31多校省选模拟12]字符串计数部分分1:直接暴力部分分2、3:n-m很小可以直接得到一个容斥的式子部分分4:只有m很小,我们可以考虑枚举所有本质不同的T串,显然我们只需要知道它使用了哪些颜色,然后就是一个GT考试的经典问题,包含给定串的长度为n的串的数量,显然容斥一步变为求解有多少不包含的数量,然后可以利用kmp自动机转移。最后只需要组合数计算一下即可,然后对于枚举本质不同的串的方法就是维护一个a进制数,但是要求其中出现的数码是从0开始的连续一段,我们只需要知道这个偏序关原创 2021-01-31 20:28:53 · 46 阅读 · 0 评论 -
P4707 重返现世(扩展min-max容斥\多项式\动态规划)
P4707 重返现世首先对于这种n个物品凑齐k个的问题肯定是扩展minmax容斥了,然后我们就可以把问题转化为min的问题了,然后又是几何级数的老套路直接变为倒数就是期望次数。kth−max(S)=∑T(−1)k−∣T∣(∣T∣−1k−1)f(T)kth-max(S)=\sum_{T}(-1)^{k-|T|}\binom{|T|-1}{k-1}f(T)kth−max(S)=T∑(−1)k−∣T∣(k−1∣T∣−1)f(T)然后我们实际上求解的就是一个背包问题,对于某一个给定的集合大小求解所原创 2021-01-29 23:12:19 · 30 阅读 · 0 评论 -
背包dp的核心思想(动态规划)
背包dp突然发现我一直没有真正理解背包,真正的背包应该是用空间换时间的一种dp方法,本质上就是n个物品选或不选,理论上有2n2^n2n种可能结果,但是背包利用的就是值域很小这一特点来重叠子结构,所以背包本质上处理的应该是一个集合中的所有物品,选或不选对应权值的变化。有时候这样的权值甚至是多维度的。...原创 2021-01-29 22:17:51 · 121 阅读 · 0 评论 -
cjy基础动态规划
cjy基础动态规划P2219 [HAOI2007]修筑绿化带对于一个nm的矩形空间内,然后选择一个ab的矩形加上它所在部分的权值,然后在内部再选择一个c*d的矩形,然后减去它的权值和,求解最大的权值。首先我们可以通过枚举求得所有右下角对应位置的矩形大小内的权值和,然后我们要求的就是另一个矩形范围内的权值最小值,这样我们就把问题转化为了求解所有等大小矩形范围内的最小值,那么有一个经典的单调队列技巧可以解决这个问题,在两维上分别处理最小值。P3943 星空对于给定01串,有k个地方是0,然后可以选择m原创 2021-01-28 17:44:11 · 70 阅读 · 0 评论 -
dp套dp(动态规划)
dp套dp这是一个对于一类动态规划的计数问题的处理方法,问题常常是如果形式确定就可以直接dp,但是现在却要求满足某个要求的所有方案数,一般的处理方法就是一维负责增量构造,其他维度用来表示内部dp状态,然后转移时候先让内部状态转移,然后外部dp对应存储方案数。类似于将内部的dp转移变成一个自动机,可以接受所有不同的转移,然后我们的外层dp就是在自动机上进行计数。P4590 [TJOI2018]游园会给定一个长度为k的字符串,求解长度为n的字符串中LCS为i的个数,对所有的i输出答案。首先对于LCS的原创 2021-01-25 18:36:22 · 1488 阅读 · 0 评论 -
F - Sugoroku2(动态规划)
F - Sugoroku2一个经典的概率期望dp的模型,现在要求从0移动到n,每次等概率移动1到m的距离,有k个点,一旦到达就移动回到0,一旦到达n或超过n游戏结束,求解步数期望。那么我们dp的时候可以发现每一个值会有f0f_0f0这一项,这就不满足后效性了,但是我们可以将其看作是dp中的一项,递推系数,最后就可以利用方程求解出f0f_0f0递推系数的思想,有的时候我们的dp式子中有一些不确定的项,但是我们只关注它的形式,那么对于一般化的形式进行系数的递推即可...原创 2021-01-24 12:59:27 · 81 阅读 · 0 评论 -
P4719 【模板】“动态 DP“&动态树分治(矩阵/轻重链剖分/ddp)
P4719 【模板】“动态 DP”&动态树分治求解树上最大权独立集,但是需要支持修改。https://www.luogu.com.cn/problem/solution/P4719首先我们可以得到一个非常简单的dp式子,然后现在考虑怎么支持修改,首先每一次修改只会影响到当前节点的祖先,然后dp需要支持修改,可以利用矩阵处理。但是仅仅利用矩阵,需要修改的也有O(n)个矩阵,我们考虑进行轻重链剖分,然后我们维护的状态转移仅仅权值包含轻儿子,然后从重儿子状态转移,这样转移矩阵中就只包含轻儿子的权值原创 2021-01-22 22:31:51 · 108 阅读 · 0 评论 -
动态规划问题的延伸问题
动态规划问题的延申问题构建状态转移图加上一些网络流或者图论算法可以处理最小割,比如最少删去几个能够使得答案变化利用dp数组加上枚举可能会增加一些附加限制,但是部分的dp数组仍然可以利用,比如从i开始的dp值以及到i结束的dp值在dp数组上继续进行dp经典的就是可逆背包问题先枚举然后dp有些问题需要我们枚举每个点是否加入,然后这样dp,就知道这个点是否是必需的。...原创 2021-01-19 10:29:57 · 19 阅读 · 0 评论 -
P2487 [SDOI2011]拦截导弹(cdq分治/计数问题思想)
P2487 [SDOI2011]拦截导弹求解二维上的LIS,并且要求出每个点的选中概率。首先对于每个点的选中概率,可以通过方案数计算,那么就是选中它的方案数除以总方案数。关键在于选中它的方案数怎么求,可以通过以它开头的LIS方案数和以它结束的LIS方案数进行计算。这个计算方法还是很巧妙的,相当于我们钦定了选择它,然后向两边都是LIS。然后就是一个典型的三维偏序了。...原创 2021-01-18 16:34:31 · 90 阅读 · 0 评论 -
[AGC024F] Simple Subsequence Problem(动态规划/压缩状态的思想)
[AGC024F] Simple Subsequence Problem有一个01串集合S,其中每个串的长度都不超过20,你要求出S中至少k个串的子序列的最长串,如果有多解,输出字典序最小的那组解S<=2^(n+1)-1显然直接构造求解十分困难,所以我们直接枚举并检验,枚举复杂度O(2^20)然后检验复杂度高达20*n,然后我们考虑如何优化,我们希望压缩枚举的状态,也就是实现多个串一起匹配的过程,考虑表示状态,有用的信息只有当前匹配的串内容和剩下没有匹配的串内容,然后这个东西相当于压缩了前面的匹原创 2021-01-29 18:00:43 · 19 阅读 · 0 评论 -
B-Donut Drone(循环/分块/DP)
B - Donut Drone这是一道神题,其中蕴含的思维很巧妙。在一个循环的二维矩阵中,每个点有一个权值,然后每次一个点只能向右上、正右和右下三个地方中权值最大的地方移动,要求支持两类操作,一种是移动k次,一种是修改权值。n,m<=3000 q<=3000 k<=1e9首先由于k的值比较大,对于这种东西有几种思路。数学推导规律,得出规律存在循环,可以将循环内的量一次算分治使得复杂度降为log分块,复杂度取决于块的大小。那么我们从图论角度思考,可以发现它是一个内向基环原创 2020-11-16 20:22:34 · 132 阅读 · 0 评论 -
E - The Imp(博弈/动态规划)
E - The Imp有n个物品且分别为价值vi成本ci,然后每次选择购买后,有人可以使用k次魔法,使得物品消失但是成本仍然花费了,求解最大收益。首先最后的最优解序列,一定是可以由自己决定的,那么它一定满足vi递增,我们可以推导一下,因为必然前面的选择会被去掉,所以必然不优。所以我们就把它变成了一个序列问题,然后按照博弈论的策略来dp即可。但是注意这道题,后面的操作对于前面的操作没有影响,所以我们可以反着dp。不过似乎正着也可以。...原创 2021-01-29 18:00:47 · 66 阅读 · 0 评论