
动态规划(DP)
文章平均质量分 87
动态规划(DP)知识以及题目
CaptainHarryChen
I solemnly swear that I am up to no good.
展开
-
【HDU1693】Eat the Trees(插头DP)
题目大意:找若干个环,布满地图所有白格,求方案数。题解:dp[I][j][s]表示I,j轮廓线时,轮廓线上的插头状态为s(01状态压缩),的方案数。转移: ①当前格为白格: 不能增加新插头。 任选一个蓝插头 必须选下面两个蓝插头。 ②当前格为黑格 1.有插头通往这里:不可能,方案数为0; 2.没有插头通往这里:直接转移上一次方案数。代码:#include<cstdio>#原创 2017-02-13 21:27:11 · 355 阅读 · 0 评论 -
动态规划(DP)——单调优化
形式形如dp[i]=max(dp[j]+g[j])+w[i] |(j≥f[i])dp[i]=max(dp[j]+g[j])+w[i] |(j≥f[i])dp[i]=max(dp[j]+g[j])+w[i]\space \space | (j\geq f[i]) 的dp方程, (f[x],g[x],w[x]分别为与x有关的不同式子) (需保证f[...原创 2018-05-05 09:34:33 · 522 阅读 · 0 评论 -
【POJ3691】DNA repair (AC自动机+DP)
题意给定N个模式字符串,和一个匹配串,要求匹配串中不出现任何一个模式串,最少修改几个字母? (字符串中只有’A’、’C’、’G’、’T’,修改操作也只能修改成这四个字母)题解简单的AC自动机+DP,适合作为模板题(不知道这中算法的人)首先想到的就是最暴力的DP就是:dp[i][j]表示当前在第i位,第i位为j字符时,最少需要修改多少次,每次转移到i就必须检查i之前的若干位是否为模...原创 2018-08-11 11:37:12 · 501 阅读 · 0 评论 -
【HDU6357】Hills And Valleys(DP)
题意给定一个数组,元素均在[0,9],可以翻转一段区间,求最长不下降子序列题解很巧妙的DP原创 2018-08-18 21:15:31 · 290 阅读 · 0 评论 -
【AtCoder2000】Leftmost Ball (DP+组合数)
题意Snuke喜欢五颜六色的球。他总共有N×K个球,有N种颜色,每种颜色的球有K个。颜色编号为1到N。他将按照任意顺序排列所有球。然后,对于每种颜色,他将该颜色的最左边的球涂成颜色0,颜色0不同于N种原始颜色中的任何颜色。如将球排列为(1,2,1,2),染色后就变为 (0,0,1,2)。 所有操作后,球的颜色序列有多少种,求这个方案数mod 10^9+7。题解发现一个性质:对任何前缀...原创 2018-09-17 10:43:28 · 332 阅读 · 0 评论 -
【AtCoder1983】BBQ Hard (组合数+巧妙模型转化)
半题解输入A[i],B[i],求∑i=1N∑j=i+1NCAi+Aj+Bi+BjAi+Bi\sum_{i=1}^N\sum_{j=i+1}^N C_{A_i+A_j+B_i+B_j}^{A_i+B_i}i=1∑Nj=i+1∑NCAi+Aj+Bi+BjAi+Bi题解CAi+Aj+Bi+BjAi+BiC_{A_i+A_j+B_i+B_j}^{A_i+B_i}CAi+Aj+B...原创 2018-09-22 21:26:51 · 347 阅读 · 0 评论 -
【BZOJ3864】Hero meet devil(dp)
题目大意对每一个i(1<=i<=n),求长度为m,与给定字符串S的最长公共子序列的长度为i的字符串有多少个?题解DP新套路刚开始想的时候,怎么定义状态都会造成重复等各种问题,于是搜题解。。。考虑求LCS时的dp:定义lcs[i][j]lcs[i][j]lcs[i][j]表示A串的前i位与B串的前j位的LCS长度lcs[i][j]=max{lcs[i−1][j−1]+1&nb...原创 2018-12-27 17:12:56 · 413 阅读 · 0 评论 -
【BZOJ2216】Lightning Conductor (决策单调性DP)
题目大意给一个序列aia_iai,对每一个i,求出最小的非负整数p,使得对任意j满足aj≤ai+p−∣i−j∣a_j\leq a_i+p-\sqrt {|i-j|}aj≤ai+p−∣i−j∣题解移项得p≥aj−ai+∣i−j∣p\geq a_j-a_i+\sqrt {|i-j|}p≥aj−ai+∣i−j∣绝对值可以去掉,正着算一遍,倒着算一遍,取最大值即可此时保证i>...原创 2018-12-27 19:53:52 · 253 阅读 · 0 评论 -
【CodeForces553E】Kyoya and Train(DP+FFT+CDQ分治)
题目大意给一个有向图,有一个人要从111走到nnn,第iii号边花费的钱为cic_ici,花费的时间为111~TTT中随机的值,每种时间的概率为pi,jp_{i,j}pi,j,如果这个人在TTT时刻之后走到nnn,就要交XXX的罚款,求这个人花钱的最小期望。题解令dp[u][t]dp[u][t]dp[u][t]表示当前走到了u号结点,已经花费的时间为t,走到终点的最小期望代价。dp[u...原创 2018-12-25 20:27:55 · 836 阅读 · 0 评论 -
【CodeForces840C】On the Bench(容斥、DP)
题目大意m(1≤m≤300)m(1≤m≤300)m(1\leq m \leq 300)个数ai(1≤ai≤109)ai(1≤ai≤109)a_i(1\leq a_i \leq 10^9),求有多少个排列(每个数都不相同,即使它们值一样),满足相邻两个数相乘的积不为完全平方数。题解将每个aiaia_i的平方因子全部除掉,剩下的数转换为一个经典问题: 有n1n1n_1个a1a1a_1...原创 2018-05-01 12:07:25 · 361 阅读 · 0 评论 -
【AtCoder3913】【Peterzavodsk Contest 001 F】XOR Tree(状压DP)
看了别人的题解,想了半天,我决定把它解释清楚一些。题目大意有N(2≤N≤105)N(2≤N≤105)N(2\leq N\leq10^5)个点的树,树边有权值a(0≤a≤15)a(0≤a≤15)a(0\leq a \leq 15),每次操作可以把树上一条路径上所有边异或一个任意值www,最少多少次操作可以使所有边权都变为000。题解用V[u]V[u]V[u]表示把结点uuu的所有边的...原创 2018-03-24 16:28:21 · 383 阅读 · 0 评论 -
【HDU6017】Girls Love 233 (DP)
题目大意:一个由2和3组成的长度为n的串,有m/2次机会操作(将相邻两个数交换),问最多可以得到多少个233?题解&代码:/*dp[i][j][k]表示第i个2放在第j位,用了k次操作的233最多个数。*/#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define max(a,b) ((原创 2017-03-02 21:48:41 · 627 阅读 · 0 评论 -
【codejam2008_Round1C_B】Ugly Numbers (DP)
题目大意:输入一个长度最长为40位的数,再中间插入一些’+’或’-‘,使整个式子结果可以被2或3或5或7整除,有多少种方法达到目标。题解:考虑处理2,3,5,7的余数, 可以处理2×3×5×7=2102×3×5×7=210的余数。 dp[i][j]表示前i位除以210余j的方案数。 dp[i][j]=∑k=1idp[k−1][(j−num(k,i)+210)mod210]+dp[k−1][(j+原创 2017-07-10 15:35:13 · 351 阅读 · 0 评论 -
【SPOJ KPSUM】The sum(数位DP)
题目大意:把1到N的数按顺序写出来,在每两个数位之间交替地添加+-号,求最后的和。如下: 1,2,3,4,5,6,7,8,9,10,11,12→1-2+3-4+5-6+7-8+9-1+0-1+1-1+2=5原创 2017-07-16 21:38:29 · 440 阅读 · 0 评论 -
【POJ1795】DNA Laboratory(状态压缩DP)
题目大意给定n(1≤n≤15)(1≤n≤15)个字符串,只会由'A' 'C' 'G' 'T' 四种字符构成,求一个最短的字符串S,使得给定的n个字符串均为S的字串,如果有多解,输出字典序最小的S。原创 2017-08-11 22:31:39 · 629 阅读 · 1 评论 -
动态规划(DP)——斜率优化
形式形如dp[i]=max(dp[j]−a[i]×b[j]+c[j])+d[i]dp[i]=max(dp[j]−a[i]×b[j]+c[j])+d[i]dp[i]=max(dp[j]-a[i]\times b[j]+c[j])+d[i]的dp方程 (a[x],b[x],c[x],d[x]a[x],b[x],c[x],d[x]a[x],b[x],c[x],d[x]为一些与x有关的式子) (需...原创 2017-10-30 15:34:06 · 725 阅读 · 0 评论 -
【CodeForces908D】New Year and Arbitrary Arrangement (期望DP)
题目大意有一个ab字符串,初始为空。 用PaPa+Pb\frac {P_a} {P_a+P_b}的概率在末尾添加字母a,有 PbPa+Pb\frac {P_b} {P_a+P_b}的概率在末尾添加字母b,当出现≥k个ab子串时立即停止添加字母,求最后期望的ab子串个数。(子串ab不要求连续) 例子:当k=1,aab含2个ab,bbabbab时不可能出现的,因为到了bbab就会停止添加字母。原创 2017-12-31 09:29:02 · 1709 阅读 · 3 评论 -
【hihoCoder1529】不上升序列(DP+斜率+堆)
题目描述给定一个长度为 n (1≤n≤5000001 ≤ n ≤ 500000) 的非负整数序列 a[1..n]。 你每次可以花费 1 的代价给某个 a[i] (0a[i]≤1090 ) 加1或者减1。 求最少需要多少代价能将这个序列变成一个不上升序列。题解首先想到的是最朴素的DP:dp[i][j]表示前i个数排成不上升序列,最小的数为j,所需的最小代价;dp[1][j原创 2018-01-15 21:20:11 · 573 阅读 · 0 评论 -
排列问题(DP)
题意长度为N的排列是一个序列(a,a,...,a)(a,a,...,a)(a , a , ..., a ),恰好包含从111到NNN的每一个数字。例如,(3,1,4,5,2)(3,1,4,5,2)(3, 1, 4, 5, 2)是 一个长度为5的排列。 对于两个排列a和b,定义 magic(a,b)=max(a,b)+max(a,b)+...+max(a,b)magic(a,b)=max(...原创 2018-03-12 09:39:12 · 1273 阅读 · 0 评论 -
【洛谷P4719】动态DP(全局平衡二叉树)
题目大意给定一棵n个点的树,点带点权。有m次操作,每次操作给定x,y,表示修改点x的权值为y。你需要在每次操作之后求出这棵树的最大权独立集的权值大小。题解如果不带修改操作,正常的DP式:dp[u][1]dp[u][1]dp[u][1]表示当前结点保证选择,这个结点的子树独立集最大权值。dp[u][0]dp[u][0]dp[u][0]表示当前结点不选择,这个结点的子树独立集最大权值。...原创 2019-03-23 15:51:19 · 571 阅读 · 0 评论