动态规划-普通DP
Maxwei_wzj
AFO
展开
-
【CF840C】On the Bench-DP+组合数学
测试地址:On the Bench题目大意: 给出一个长为nnn的序列AAA,问有多少种111 ~ nnn的排列ppp,满足对于任意1≤i&lt;n1\le i&lt;n1≤i<n,有APi⋅APi+1A_{P_i}\cdot A_{P_{i+1}}APi⋅APi+1不为完全平方数。做法: 本题需要用到DP+组合数学。直接状压DP的复杂度应该是O(n22n)O(...原创 2018-10-30 10:31:13 · 259 阅读 · 0 评论 -
【BZOJ3233】找硬币(AHOI2013)-DP+数论
测试地址:找硬币做法: 本题需要用到DP+数论。假设我们有了构造出了一个合法硬币序列xxx,怎么计算最少需要使用的硬币数量?显然,因为xkx_kxk为xk−1x_{k-1}xk−1的倍数,能用大的就应该用大的,那么对于最大的币值xkx_kxk,应该要使用⌊aixk⌋\lfloor\frac{a_i}{x_k}\rfloor⌊xkai⌋个,于是还剩下ai%xka_i\%x_kai%...原创 2018-10-31 22:34:49 · 291 阅读 · 0 评论 -
【BZOJ1190】梦幻岛宝珠(HNOI2007)-背包DP+思维
测试地址:梦幻岛宝珠做法: 本题需要用到背包DP+思维。这道题看上去是一个裸01背包,然而容量特别大,因此我们只能从其中唯一一个特殊条件入手:a⋅2ba\cdot 2^ba⋅2b形式的重量。我们考虑把这些物品分阶段来进行决策。我们首先对每个bbb,求出重量表示为a⋅2ba\cdot 2^ba⋅2b的那些物品中,取重量为k⋅2bk\cdot 2^bk⋅2b的物品能得到的最大总价值totval(...原创 2018-10-22 16:25:06 · 207 阅读 · 0 评论 -
【BZOJ1835】基站选址(ZJOI2010)-DP+线段树优化
测试地址:基站选址 题目大意:有n(≤20000)n(≤20000)n(\le 20000)个村庄,第iii个村庄坐标为didid_i。现在要在村庄中建造不超过k(≤100)k(≤100)k(\le 100)个基站,在村庄iii建造基站的费用是cicic_i,并且如果没有在村庄iii周围sisis_i距离的范围内建造基站的话,就要支付WiWiW_i的补偿费。求最小花费。 做法:本题需要用到DP...原创 2018-09-10 09:34:57 · 329 阅读 · 0 评论 -
【LuoguP3600】随机数生成器-概率DP+双指针
测试地址:随机数生成器 做法:本题需要用到概率DP+双指针。 考虑离散概率情况下的期望公式: E[ans]=∑xs=1s⋅P(ans=s)E[ans]=∑s=1xs⋅P(ans=s)E[ans]=\sum_{s=1}^x s\cdot P(ans=s) 也就相当于: E[ans]=∑xs=1P(ans≥s)E[ans]=∑s=1xP(ans≥s)E[ans]=\sum_{s=1}^x P...原创 2018-08-25 11:00:53 · 751 阅读 · 0 评论 -
【LuoguP3830】随机树(SHOI2012)-DP+概率期望
测试地址:随机树 做法:本题需要用到DP+概率期望。 对于第一问,考虑令f(n)f(n)f(n)为有nnn个叶子节点的树中,叶子平均深度的期望值,我们考虑找到递推的方法。直接推这个不太好推,我们知道叶子平均深度乘上nnn就是叶子深度和,因为期望的线性性,所以f(n)⋅nf(n)⋅nf(n)\cdot n就是叶子深度和的期望值。这个就比较好推了。对于一棵树,原本的叶子深度和为sss,如果展开一个...原创 2018-08-31 22:15:05 · 276 阅读 · 0 评论 -
【BZOJ3235】好方的蛇(AHOI2013)-DP+单调栈+容斥
测试地址:好方的蛇 做法:本题需要用到DP+单调栈+容斥。 首先,容易想到预处理出某个顶点(左上、左下、右上、右下)为(i,j)(i,j)(i,j)的合法矩形数目。怎么预处理呢?以处理右下顶点为(i,j)(i,j)(i,j)的合法矩形数目为例,我们要数的实际上是合法的左上顶点的数目,我们发现这个数目可以这样计算:令up(i,j)up(i,j)up(i,j)为从点(i,j)(i,j)(i,j)向...原创 2018-07-12 18:23:11 · 272 阅读 · 0 评论 -
【CF739E】Gosha is Hunting-期望DP+WQS二分
测试地址:Gosha is Hunting 题目大意:有nnn只精灵,有aaa个精灵球和bbb个大师球,用精灵球抓住精灵iii的概率为pipip_i,用大师球抓住精灵iii的概率为qiqiq_i,不能用两个或以上相同种类的球重复捕捉同一只精灵,问能捕捉到的精灵的最大期望数目。 做法:本题需要用到期望DP+WQS二分。 首先很快能想到一个DP:令f(i,a,b)f(i,a,b)f(i,a,b)...原创 2018-07-03 19:33:58 · 217 阅读 · 0 评论 -
【BZOJ1264】基因匹配(AHOI2006)-DP+树状数组
测试地址:基因匹配 做法:本题需要用到DP+树状数组。 考虑最基本的求LCS的DP,令f(i,j)f(i,j)f(i,j)为以第一个串第iii个字符结尾,用第二个串的前jjj个字符进行匹配,能得到的LCS长度。有以下状态转移方程: 当Ai≠BjAi≠BjA_i\ne B_j时:f(i,j)=f(i,j−1)f(i,j)=f(i,j−1)f(i,j)=f(i,j-1); 当Ai=BjAi=B...原创 2018-06-19 10:16:22 · 268 阅读 · 0 评论 -
【LOJ2172】所有公共子序列问题(FJOI2016)-序列自动机+DP+高精度
测试地址:所有公共子序列问题 做法:本题需要用到序列自动机+DP+高精度。 序列自动机,顾名思义,就是能识别一个字符串所有本质不同的子序列的自动机。构建的方法十分简单:只需要从字符串上的每个点,向后面每种字符第一次出现的位置连边即可。唯一要注意的是,就像是所有其他自动机一样,还是要多建立一个空点表示空串的。因此,令字符集大小为sss,字符串长度为nnn,那么构建序列自动机的时间复杂度是O(sn...原创 2018-06-17 17:32:59 · 297 阅读 · 0 评论 -
【LOJ2538】Slay the Spire(PKUWC2018)-DP+组合数
测试地址:Slay the Spire 做法:本题需要用到DP+组合数。 题目要求的就是对于所有抽牌的方案,能得到的伤害值的总和。 我们知道,在使用的强化牌一定的基础上,攻击牌肯定是从大到小取最优。然后要观察到一个结论:如果有强化牌,先出强化牌是最优的,出到没有强化牌,或者只有一张牌可出的时候再出攻击牌。如何证明?因为强化牌的倍数k&gt;1k&gt;1k>1,令出强化牌之前的可出攻击牌数值...原创 2018-06-24 10:39:15 · 666 阅读 · 0 评论 -
【BZOJ4044】Virus Synthesis(CERC2014)-回文自动机+DP
测试地址:Virus Synthesis 题目大意:一开始你有一个空串,有两种操作:1.往串的前面或后面插入一个A,C,G,T中的字符。2.把整个串翻转后接到这个串前面或后面。问最少需要多少次操作能得到一个给定的字符串?len≤105len≤105len\le 10^5。 做法:本题需要用到回文自动机+DP。 显然一个回文串一定存在一个最优方案,使得最后一次操作是翻转操作。而在最后一次翻转操...原创 2018-06-16 13:54:33 · 279 阅读 · 0 评论 -
【BZOJ3997】组合数学(TJOI2015)-Dilworth定理+DP
测试地址:组合数学 做法:本题需要用到Dilworth定理+DP。 我们首先把这些点按坐标从上到下,从左到右排成一排,我们发现在一条路径中选完一个点(x,y)(x,y)(x,y)后,下一个必须选择一个(x′,y′)(x′,y′)(x',y')使得x′≥x,y′≥yx′≥x,y′≥yx'\ge x,y'\ge y,且两个坐标不能同时相等。 进一步研究,我们发现这是一个偏序关系,根据Dilwor...原创 2018-06-21 11:31:10 · 237 阅读 · 0 评论 -
【BZOJ5324】守卫(JXOI2018)-区间DP+优化
测试地址:守卫 做法:本题需要用到区间DP+优化。 看到数据范围,容易想到令f(l,r)f(l,r)f(l,r)为区间[l,r][l,r][l,r]的答案,我们来考虑怎么转移。 对于一个区间[l,r][l,r][l,r],首先点rrr是一定要有人的,对于点rrr,它能看到的所有点可以这样求:从点r−1r−1r-1开始,如果它到点rrr的斜率和上一个能看到的点到点rrr的斜率相比更小,那么当前...原创 2018-05-24 21:02:04 · 575 阅读 · 0 评论 -
【BZOJ3213】抛硬币(ZJOI2013)-期望DP+KMP+高精度
测试地址:抛硬币 做法:本题需要用到期望DP+KMP+高精度。 很容易想到,先用KMP求出信息,然后从一个点iii,要么成功匹配第i+1i+1i+1个字符到达点i+1i+1i+1,要么匹配失败到达某个点fail(i+1)fail(i+1)fail(i+1)。于是令f(i)f(i)f(i)为生成出长度为iii的前缀所需要的期望步数,有状态转移方程: f(i)=f(i−1)+1+(1−pi)(f...原创 2018-06-11 17:56:23 · 902 阅读 · 0 评论 -
【BZOJ4897】成绩单(THUSC2016)-玄幻区间DP
测试地址:成绩单 做法:本题需要用到区间DP。 容易想到每次取的都是一个子序列。直觉上想到的一个状态定义是,令f(i,j)f(i,j)f(i,j)为删掉区间[i,j][i,j][i,j]中所有数的最小代价,但我们发现这没法转移,又注意到转移和所取的子序列中最大数和最小数有关,那么便有了如下状态定义和状态转移方程: 令f(i,j,l,r)f(i,j,l,r)f(i,j,l,r)为删掉区间[i,...原创 2018-05-23 22:36:40 · 435 阅读 · 0 评论 -
【POJ2778】DNA Sequence-AC自动机+矩阵优化DP
测试地址:DNA Sequence 题目大意:给定mmm个DNA序列,问有多少长为nnn的DNA序列不包含上面的任何一个DNA序列。一个DNA序列指一个仅包含A,C,G,T四种字符的字符串。 做法:本题需要用到AC自动机+矩阵优化DP。 首先不匹配上任意一个字符串,这已经是非常明显的AC自动机+DP了,只需令f(i,j)f(i,j)f(i,j)为要求的DNA序列的前iii位匹配到AC自动机上...原创 2018-04-04 10:13:14 · 180 阅读 · 0 评论 -
【BZOJ2707】走迷宫(SDOI2012)-SCC缩点+拓扑排序+期望DP+高斯消元
测试地址:走迷宫 题目大意:有一个nnn个点的有向图,人从起点SSS出发,每次等概率随机选择一条出边走出,问走到终点TTT的期望步数。n≤104n≤104n\le 10^4,一个强连通分量中的点数不超过100100100。 做法:本题需要用到SCC缩点+拓扑排序+期望DP+高斯消元。 我们很快就能根据标准的期望逆推型DP得到该题的状态转移方程,因为图中存在环,所以需要高斯消元,然而O(n3)...原创 2018-04-07 14:46:59 · 357 阅读 · 0 评论 -
【NOIP2017普及组T4】跳房子-二分答案+DP单调队列优化
【NOIP2017普及组T4】跳房子-二分答案+DP单调队列优化原创 2017-12-06 21:25:29 · 1540 阅读 · 0 评论 -
【BZOJ1004】Cards(HNOI2008)-Burnside引理+DP+逆元
【BZOJ1004】Cards(HNOI2008)-Burnside引理+DP+逆元原创 2017-11-25 17:43:42 · 283 阅读 · 0 评论 -
【BZOJ1002】轮状病毒(FJOI2007)-DP+组合数学+高精度
【BZOJ1002】轮状病毒(FJOI2007)-DP+组合数学+高精度原创 2017-11-24 16:41:23 · 351 阅读 · 0 评论 -
【BZOJ1003】物流运输(ZJOI2006)-DP+最短路
【BZOJ1003】物流运输(ZJOI2006)-DP+最短路原创 2017-11-25 16:43:22 · 266 阅读 · 0 评论 -
【BZOJ3294】放棋子(CQOI2011)-DP+组合数学
【BZOJ3294】放棋子(CQOI2011)-DP+组合数学原创 2017-11-24 19:20:01 · 373 阅读 · 0 评论 -
【BZOJ1009】GT考试(HNOI2008)-DP矩阵优化+KMP
【BZOJ1009】GT考试(HNOI2008)-DP矩阵优化+KMP原创 2017-12-01 20:34:28 · 488 阅读 · 0 评论 -
【HDU4374】One hundred layer-单调队列优化DP
【HDU4374】One hundred layer-单调队列优化DP原创 2017-09-21 21:26:06 · 345 阅读 · 0 评论 -
【HDU4089】Activation-概率DP好题
【HDU4089】Activation-概率DP好题原创 2017-09-20 22:05:14 · 285 阅读 · 0 评论 -
【BZOJ1296】粉刷匠(SCOI2009)-区间DP+资源分配型DP
【BZOJ1296】粉刷匠(SCOI2009)-区间DP+资源分配型DP原创 2017-09-10 20:04:08 · 401 阅读 · 0 评论 -
【BashuOJ2276】月饼盒-矩阵型DP
【BashuOJ2276】月饼盒-矩阵型DP原创 2017-09-10 20:35:49 · 361 阅读 · 0 评论 -
【APIO2009T1】采油区域-分类讨论+动态规划
【APIO2009T1】采油区域-分类讨论+动态规划原创 2017-09-10 13:28:43 · 917 阅读 · 0 评论 -
【HDU5378】Leader in Tree Land-概率DP+逆元+好题
【HDU5378】Leader in Tree Land-概率DP+逆元+好题原创 2017-09-25 19:32:46 · 314 阅读 · 0 评论 -
【BZOJ2111】排列计数(ZJOI2010)-DP+Lucas定理
测试地址:排列计数 做法:本题需要用到DP+Lucas定理。 我们发现,若从所有iii向⌊i/2⌋⌊i/2⌋\lfloor i/2\rfloor连边,等同于从所有iii向2i2i2i和2i+12i+12i+1连边,这样我们会连出一棵二叉树。不难看出,由nnn个点组成的这种二叉树的左子树的节点数是固定的,并且它的左右子树也满足这种结构。 按照题目中所给的条件,我们要求的实际上是满足这种结构的大...原创 2018-04-17 15:36:43 · 236 阅读 · 0 评论 -
【BZOJ3143】游走(HNOI2013)-DP+概率期望+高斯消元
测试地址:游走 做法:本题需要用到DP+概率期望+高斯消元。 首先根据期望可加性,我们知道路径和的期望等于每条边的期望经过次数乘上边权。又根据排序不等式,我们知道给大的期望次数分配小的编号是最优的,那么现在问题就变成求每条边的期望经过次数。 我们可以先求出每个点的期望经过次数pipip_i,然后边(i,j)(i,j)(i,j)的期望经过次数就是pideg(i)+pjdeg(j)pideg(i...原创 2018-04-05 21:15:05 · 252 阅读 · 0 评论 -
【BZOJ2337】XOR和路径(HNOI2011)-DP+概率期望+高斯消元
测试地址:XOR和路径 做法:本题需要用到DP+概率期望+高斯消元。 首先,位运算有一个很好的性质,那就是每一位实际上是相互独立的,所以我们按照二进制位把边权拆开,那么我们现在只需要解决一个子问题即可:在一个边权只有000和111的图上,求从点111走到点nnn的期望异或和。 我们可以令f(i)f(i)f(i)为从点iii走到点nnn的期望异或和,我们发现这其实也是路径上异或和为111的概率...原创 2018-04-05 21:30:29 · 193 阅读 · 0 评论 -
【BZOJ1093】最大半连通子图(ZJOI2007)-SCC缩点+拓扑序DP
测试地址:最大半连通子图 做法:本题需要用到SCC缩点+拓扑序DP。 乍一看这题好像没什么思路,但我们发现,如果一个点在一个最优的方案中,那么该点所在的强连通分量肯定也在这个方案中,不然就不是最优方案,因此我们先把强连通分量缩起来,这样我们就得到了一个DAG,问题变成在DAG上取一些点,使得两两间都有一个点能到达另一个点。 观察这个性质,我们发现这个性质成立当且仅当存在一条链连接所有选择的点...原创 2018-05-28 17:39:45 · 252 阅读 · 0 评论 -
【BZOJ4008】亚瑟王(HNOI2015)-概率DP
测试地址:亚瑟王 做法:本题需要用到概率DP。 一开始本人是这样定义状态的:令f(i,j)f(i,j)f(i,j)为第iii轮取到第jjj张牌的概率,然后递推乱搞。然后就连样例都过不去,因为某些概率间是有关联的,而不是相互独立的,例如一轮只能取一张牌,一张牌只能取一次之类的这种东西。 正确的方法是,求出g(i)g(i)g(i),表示第iii张牌在所有rrr轮中被取的概率,显然有: g(1)...原创 2018-05-23 14:55:06 · 216 阅读 · 0 评论 -
【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组。 首先,我们发现每次拔高的区间都是一个后缀。这个自己画一画就大概能证出来了。 那么我们就有了一个状态定义:令f(i,j)f(i,j)f(i,j)为前iii个后缀被拔高了jjj次能获得的最长不下降子序列长度,有状态转移方程: f(i,j)=1+max{f(p,q)|p<i,q≤j,ap−ai≤j−q}f(i,j)=1+ma...原创 2018-05-16 17:29:04 · 175 阅读 · 0 评论 -
【BZOJ2806】熟悉的文章(CTSC2012)-广义SAM+二分+DP+单调队列
测试地址:熟悉的文章 做法:本题需要用到广义SAM+二分+DP+单调队列。 首先,LLL的性质显然是单调的,所以我们二分LLL。接下来容易想到DP,令f(i)f(i)f(i)为以第iii个字符结尾的前缀最多能有多少个字符被符合条件的子串覆盖,容易得到状态转移方程: f(i)=max(f(i−1),f(i−k)+k)f(i)=max(f(i−1),f(i−k)+k)f(i)=\max(f(i-...原创 2018-05-27 15:55:34 · 208 阅读 · 0 评论 -
【BZOJ2244】拦截导弹(SDOI2011)-DP+CDQ分治
测试地址:拦截导弹 做法:本题需要用到DP+CDQ分治。 很容易想到,先求出最长不上升子序列的数量,再对每个点进行判断,如果该点可能在最长不上升子序列中,就用包含它的最长不上升子序列数量除以方案总数得到概率。那么我们要求的就是以某枚导弹开头或者结尾的最长不上升子序列长度及数量。下面先讨论从前往后的方向。 令f(i)f(i)f(i)为最后选第iii枚导弹能得到的最长不上升序列长度,很容易写出状...原创 2018-05-21 21:35:14 · 272 阅读 · 0 评论 -
【BZOJ5340】假面(CTSC2018)-概率DP
测试地址:假面 做法:本题需要用到概率DP。 首先,注意到血量很小,因此对于第一种操作,直接概率DP维护敌方单位在各个血量的概率即可,式子很简单相信大家都会,我就不写了,时间复杂度为O(Qm)O(Qm)O(Qm)。 接下来,对于第二种操作,令第iii个单位的存活概率为pipip_i,则有: ansi=∑k−1j=01j+1g(i,j)ansi=∑j=0k−11j+1g(i,j)ans_i=...原创 2018-05-21 16:27:18 · 523 阅读 · 0 评论 -
【BZOJ1566】管道取珠(NOI2009)-DP+问题转化
测试地址:管道取珠 做法:本题需要用到DP+问题转化。 这道题最妙的地方在于对问题的转化。考虑∑a2i∑ai2\sum a_i^2的组合意义,我们发现它等价于玩两次游戏,得到的输出序列相同的方案数,那么我们令dp(i,j,k)dp(i,j,k)dp(i,j,k)为前iii轮中,第一次游戏取了上管道的前jjj个珠子,第二次游戏取了上管道的前kkk个珠子,得到的输出序列相同的方案数,那么状态转移方...原创 2018-05-07 16:53:29 · 175 阅读 · 0 评论