动态规划
没有ID的ID
这个作者很懒,什么都没留下…
展开
-
POJ 1390 Blocks
POJ算法:区间DPDPDP状态:f[i][j][k]f[i][j][k]f[i][j][k]表示消去i−ji-ji−j这段区间,kkk是右边可以利用的数(就是留下来准备合在一起的数)每次消去这段数有两种方法:直接消去这个数留下这个数,枚举iii,消掉i−ki-ki−k这段,然后和iii合到一起再消掉转移方程:直接消去的方式:f[l][r][x]=dfs(l,r-1,0)+n...原创 2019-11-06 16:05:40 · 154 阅读 · 0 评论 -
动态规划之01背包问题入门
01背包问题转载一篇很好的01背包问题的博客01背包问题描述:有编号分别为a,b,c,d,e的五件物品,它们占据的空间量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,每件物品数量只有一个,现在给你个空间量为10的背包,如何让背包里装入的物品具有最大的价值总和?我们先用递推的方式求解f[i][j]表示做出i号选择时还有j的空间量,我们按照动态规划的思想(i号物品放还是不放):...原创 2019-01-25 19:26:13 · 1118 阅读 · 0 评论 -
P4302 [SCOI2003]字符串折叠
传送门(洛谷)算法:区间动态规划f[i][j]f[i][j]f[i][j]表示处理i到ji到ji到j这段区间所需要的最小代价两种转移方法:一.标准的区间dpdpdp的转移f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);f[i][j]=min(f[i][j],f[i][k]+f[k+...原创 2019-10-22 17:06:44 · 115 阅读 · 0 评论 -
NOIP 模拟赛 10.21
传送门(MZOJ)T1(日程表):模拟题,直接每次模拟删除和加入就好。注意两个点:1.答案开long longlong\;longlonglong2.visvisvis数组要5e75e75e7Code#include<bits/stdc++.h>#define ll long long#define mod 1000000007#define rep(i,a,b)...原创 2019-10-21 22:05:46 · 135 阅读 · 0 评论 -
271. 杨老师的照相排列
传送门(Acwing)算法:动态规划我们可以思考,先从最大的开始放,则对于每一排第i−1i-1i−1个数一定是大于iii个数的,这就保障了从左向右递减。而我们再来考虑每一列的问题,要从后到前是递减的,而对于第jjj列和j−1j-1j−1列的第iii个位置,如果第jjj列的第iii个位置有人了而j−1j-1j−1的第iii个位置没有人,则一定也是满足递减的,因为我们是从身高最大的开始放的Cod...原创 2019-10-20 21:04:33 · 168 阅读 · 0 评论 -
P2758 编辑距离
传送门(洛谷)f[i][j]f[i][j]f[i][j]表示aaa串的前iii个数转化为bbb串的前jjj个数的最小代价若a[i]==b[j]a[i]==b[j]a[i]==b[j]f[i][j]=min(f[i−1][j−1],min(f[i−1][j]+1,f[i][j−1]+1))f[i][j]=min(f[i-1][j-1],min(f[i-1][j]+1,f[i][j-1]+1))...原创 2019-10-18 16:31:32 · 82 阅读 · 0 评论 -
P1772 [ZJOI2006]物流运输
传送门(洛谷)算法:最短路与动态规划结合c1[id][j]c1[id][j]c1[id][j]表示ididid号港口在jjj天的时候是否是正常运行co[i][j]co[i][j]co[i][j]表示从iii到jjj天走同一条路线的最小花费f[i]f[i]f[i]表示前iii天的最小花费转移方程:f[i]=min(f[i],f[j]+co[j+1][i]∗(i−j)+delta)f...原创 2019-10-15 11:24:39 · 227 阅读 · 0 评论 -
P1450 [HAOI2008]硬币购物
传送门(洛谷)完全背包和容斥原理的结合可以看一个区间相减的(其实是错的,但是好理解求[2,3][2,3][2,3]转换为求 [2,+∞)−(3,+∞)⇒[2,3]\begin{aligned}& \;\;[2,+\infty)-(3,+\infty) \\&\Rightarrow[2,3]\end{aligned} [2,+∞)−(3,+∞)⇒[2,3...原创 2019-10-14 20:12:58 · 100 阅读 · 0 评论 -
NOIP 模拟题 小象涂色
MZOJ概率dpf[i][j]f[i][j]f[i][j]表示一个点被刷了iii次最后为jjj的颜色的概率转移方程式f[i+1][j]+=f[i][j]∗0.5    f[i+1][j]+=f[i][j]*0.5\;\;f[i+1][j]+=f[i][j]∗0.5应为iii在第i+1i+1i+1之后有12\frac{1}{2}21的...原创 2019-09-04 11:46:53 · 121 阅读 · 0 评论 -
P3052 [USACO12MAR]摩天大楼里的奶牛
传送门(洛谷)状压dpf[i]表示i这种状态所需要的最小组数f[i]表示i这种状态所需要的最小组数f[i]表示i这种状态所需要的最小组数g[i]表示i这种状态下的当前组剩下的最大空间g[i]表示i这种状态下的当前组剩下的最大空间g[i]表示i这种状态下的当前组剩下的最大空间解释:      &Thi...原创 2019-08-30 16:54:02 · 135 阅读 · 0 评论 -
P2016 战略游戏
传送门(洛谷)树形dpf[u][0]表示uf[u][0]表示uf[u][0]表示u号节点不放士兵,以x为根的子树需要的最少士兵数。f[u][1]表示uf[u][1]表示uf[u][1]表示u号节点放士兵,以x为根的子树需要的最少士兵数。由于我们定义的是将其完全覆盖,则我们不需要考虑父亲节点,为什么?当我们已经回到uuu的父亲节点时设uuu的父亲为xxx,我们已经算出覆盖uuu这棵子树的最...原创 2019-08-30 11:19:12 · 149 阅读 · 0 评论 -
P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows
传送门(洛谷)看数据范围4<=n<=16    4<=n<=16\;\;4<=n<=16 明显的状压f[i][j]表示以i号结尾的牛的状态的混乱队列的个数f[i][j]表示以i号结尾的牛的状态的混乱队列的个数f[i][j]表示以i号结尾的牛的状态的混乱队列的个数0就是没...原创 2019-08-28 16:01:22 · 95 阅读 · 0 评论 -
P1896 [SCOI2005]互不侵犯
传送门(洛谷)状压DP入门题由于普通dp无法满足状态的表示,而且数据范围较小,则可以考虑状压dpf[i][j][k]表示第i列状态为j时摆了k个国王f[i][j][k]表示第i列状态为j时摆了k个国王f[i][j][k]表示第i列状态为j时摆了k个国王二进制表示国王的摆法,0为不摆,1为摆,则一列就有2n2^n2n种摆法极端情况:0,0,0,0,0,0,0,0,00,0,0,0,0,0...原创 2019-08-27 11:19:59 · 148 阅读 · 0 评论 -
P4147 玉蟾宫
传送门(洛谷)此题和浙江那道 棋盘制作一模一样思路方法都是一个样子,代码都没怎么改,吐槽参见我另一篇博客给出代码#include<bits/stdc++.h>#define rep(i,a,b) for(register int i=(a);i<=(b);i++)#define don(i,a,b) for(register int i=(a);i>=(b...原创 2019-09-18 11:45:47 · 74 阅读 · 0 评论 -
P2340 奶牛会展
传送门(洛谷)f[i]表示当智商为i时,情商最高为多少f[i]表示当智商为i时,情商最高为多少f[i]表示当智商为i时,情商最高为多少具体类似讲解请移步我的另一篇博客Code#include<bits/stdc++.h>#define rep(i,a,b) for(register int (i)=(a);(i)<=(b);(i)++)#define don(i,a,...原创 2019-08-26 21:58:48 · 114 阅读 · 0 评论 -
#10157. 「一本通 5.2 例 5」皇宫看守
传送门(LOJ)树形动规f[u][0]f[u][0]f[u][0]表示iii的父亲节点放了一个守卫,以iii为根的子树最小需要的代价f[u][1]f[u][1]f[u][1]表示iii的子节点放一个守卫,以…(同上)f[u][2]f[u][2]f[u][2]表示iii自身放一个守卫,以…(同上)本题与战略游戏最大的区别,战略游戏是求树的最大独立集最大独立集,选取每一个节点的代价是一样的...原创 2019-09-05 22:03:31 · 230 阅读 · 0 评论 -
NOIP模拟赛 遗失的二叉树
MZOJ类似于区间动归中序遍历:先遍历左儿子,再遍历根节点,最后遍历右儿子盗用百科一张图中序遍历的结果:D−B−E−A−C−FD-B-E-A-C-FD−B−E−A−C−F本题思路:如能够构成一棵中序遍历的树,则在序列中一定存在一个iii的前面数是iii的左儿子,iii后面的数构成iii的右儿子举例:在上述D−B−E−A−C−FD-B-E-A-C-FD−B−E−A−C−F中,若AA...原创 2019-09-15 21:13:05 · 93 阅读 · 0 评论 -
P4170 [CQOI2007]涂色
传送门(洛谷)算法:区间动归f[i][j]f[i][j]f[i][j]表示区间iii到jjj完成时需要的最小代价当i!=j  && a[i]==a[j]i!=j \;\&\&\ a[i]==a[j]i!=j&& a[i]==a[j]时 f[i...原创 2019-09-16 15:49:40 · 110 阅读 · 0 评论 -
P3205 [HNOI2010]合唱队
传送门(洛谷)区间动归,分为从左侧插入和从右侧插入转移方程rep(len,2,n) { rep(i,1,n-len+1) { int j=i+len-1; if(a[i]<a[j]) f[i][j][0]+=f[i+1][j][1];//从左端插入两种情况 if(a[i]<a[i+1]) f[i][j][0]+=f[i+1][j][0];//因为要从左...原创 2019-09-16 21:15:10 · 99 阅读 · 0 评论 -
P1169 [ZJOI2007]棋盘制作
传送门(洛谷)算法:动态规划相似例子:(洛谷)玉蟾宫,(洛谷)最大正方形l[i][j]l[i][j]l[i][j]表示从mapp[i][j]mapp[i][j]mapp[i][j]向左最大可延伸多少的点r[i][j]r[i][j]r[i][j]表示从mapp[i][j]mapp[i][j]mapp[i][j]向右最大可以延伸的点up[i][j]up[i][j]up[i][j]表示从map...原创 2019-09-17 22:08:23 · 68 阅读 · 0 评论 -
P1272 重建道路
传送门(洛谷)正解:树形动规dp[u][i]dp[u][i]dp[u][i]表示以uuu为根节点保留iii个节点,且与父节点不相连(也就是iii与iii的父亲不相连)的最小代价为什么这样设:因为最后求得是一个独立的子树(也就是一个独立的连通块)初始化:dp[u][1]=co[u];co[i]co[i]co[i]表示iii号点的度数。转移方程:dp[u][j]=min(dp[u]...原创 2019-09-29 10:36:27 · 102 阅读 · 0 评论 -
P4322 [JSOI2016]最佳团体
P4322 [JSOI2016]最佳团体010101分数规划与树形dpdpdp结合题意:求∑pi∑si\frac{\sum{p_i}}{\sum{s_i}}∑si∑pi的最大值,我们可以二分一个vvv,则我们只需要求∑pi>∑si∗v ==> ∑pi−∑si∗v>0 \sum{p_i}>\sum{s_i}*v~==>~\sum...原创 2019-10-07 22:00:47 · 77 阅读 · 0 评论 -
烹调方案
再来一题动归传送门(洛谷)题目描述:此题很像一个01背包,但是!!!!!!!!!现在考虑相邻的两个物品x,y。假设现在已经耗费p的时间,那么分别列出先做x,y的代价:a[x]-(p+c[x])*b[x]+a[y]-(p+c[x]+c[y])*bya[y]-(p+c[y])*b[y]+a[x]-(p+c[y]+c[x])*bx对这两个式子化简,得到①>②的条件是c[x]*b[y]&...原创 2019-05-03 21:37:28 · 138 阅读 · 0 评论 -
P2079 烛光晚餐
传送门(洛谷)可以当做一道转化为背包的模板题需要转换为二维费用背包f[i][j]表示用i的钱小明的好感度为j下小红的最大好感度f[i][j]表示用i的钱小明的好感度为j下小红的最大好感度f[i][j]表示用i的钱小明的好感度为j下小红的最大好感度这就把小明好感度作为背包体积,小红好感度为价值。这题就是一道背包题了但注意小明的好感度有负值,为了防止数组下标越界,根据数据范围,小明的好感度最...原创 2019-08-26 21:53:50 · 138 阅读 · 0 评论 -
P1412 经营与开发
传送门(洛谷)此题思维难度较大1.若按照从前往后推,钻头的值对后续有影响,无法递推,则从后向前2.w∗[a1+a2∗(1−0.01k)+a3∗(1−0.01k)2+a4∗(1−0.01k)3.....]//w可以最后乘w*[a1+a2*(1-0.01k)+a3*(1-0.01k)^2+a4*(1-0.01k)^3.....]//w可以最后乘w∗[a1+a2∗(1−0.01k)+a3∗(1−0...原创 2019-08-26 11:56:23 · 96 阅读 · 0 评论 -
P2602 [ZJOI2010]数字计数
第一次弄数位dp,这个方程式弄了我接近一下午传送门(洛谷)题目描述:Code#include<bits/stdc++.h>#define rep(i,a,b) for(register int i=(a);i<=(b);i++)#define don(i,a,b) for(register int i=(a);i>=(b);i--)#define ll lo...原创 2019-06-10 19:54:13 · 218 阅读 · 0 评论 -
【模板】最长公共子序列
主要是个人讲解传送门(洛谷)这道题两种方法一 : 动态规划:这是一个状态!!!!!(只需找到状态转移)我们考虑最后一个匹配方案第一:我们可以先得出,如果最后一个是匹配的,那么他们前一个也一定是匹配的,得出转移方程:dp[i][j]=dp[i-1][j-1]+1;第二(最后一个不匹配):如果是A串最后一个不匹配,那么我们考虑A串的前一个和B串匹配,就是dp[i-1][j]如果是B...原创 2019-05-18 17:48:58 · 107 阅读 · 0 评论 -
没有上司的舞会
传送门(洛谷)题目描述:输入数据:711111111 32 36 47 44 53 50 0输出数据:5一道树形dp题以f[i][1]表示i号人要去,f[i][0]表示i号不去以下转移方程(v是x的下属):f[x][0]+=max(f[v][1],f[v][0]);表示x不去时,下属来还是不来,因为我们找最大值,当x要来时,他的下属一定不来...原创 2019-05-17 17:24:22 · 807 阅读 · 0 评论 -
丝绸之路
动态规划传送门(洛谷)题目描述:以f[i][j]表示第j天在i号城市的状态(可能是早就在这个城市,也可能是才来)得到以下的状态转移方程:f[i][j]=min(f[i][j-1],f[i-1][j-1]+d[i]*c[j]);剩下的就直接找答案了Code#include<bits/stdc++.h>#define ll long long#define rep(...原创 2019-05-17 14:51:09 · 153 阅读 · 0 评论 -
[USACO5.4]周游加拿大Canada Tour
动态规划+字符串处理传送门(洛谷)题目描述:此题可以看成从最左边到最右边,再从右边走回左边。故我们可以看成两个人一个从左到右,一个从右到左,因此设此状态:f[i][j]表示左边的人到i号城市时和右边的人到j号城市时所走过的总城市数目此外,用一个map处理字符串,为了方便判断两个城市是否有飞机相连转移方程式: if(a[j][k] && f[i][k]) //如果有...原创 2019-05-05 11:53:12 · 2267 阅读 · 0 评论 -
游戏 A Game
再是一题动归传送门(洛谷)题目描述:输入数据6 4 7 2 9 5 2输出数据18 11此题是一区间动归题,根据题意,由于两个人都是最优策略,以f[i][j]表示一号选手的i到j号数字的最优值,二号则直接用总值减去即可。再用sum[i]表示1到i号数字的和,一个递推式:sun[i]=sum[i-1]+a[i]再者,我们每次求f[i][j]时,可以从两边拿数,则有状态转...原创 2019-05-03 15:25:36 · 192 阅读 · 0 评论 -
田忌赛马
又是一个动归题传送门(洛谷)题目描述:输入数据:392 83 7195 87 74输出数据:200这个题可以用贪心的思想解决,但若用动归做,则我们先进行初始化。g[i][j]表示田忌的i号马和齐王的j号马赛跑。我们可以假设齐王的马是按照从高到低的顺序进行出的。那么田忌出的马不是最好的马就是最撇的马(最撇的马为了消耗齐王的最好的马)rep(i,1,n) rep(j,1,n)...原创 2019-04-26 17:58:47 · 309 阅读 · 2 评论 -
数列_NOI导刊2010提高
动态规划一题传送门(洛谷)题目描述输入数据51 1 2 5 4输出数据3分析题目,第i个数只与前面删除的个数有关,但是与删除的哪些数是无关的用f[i][j]表示目前到达了第i个数,删除了j个数所能取到的最优解。如果i=x(x为当前读入的数),则符合题意,可以留下。如果不符合题意,则可能删去可能不删。得到下列转移方程: if(i-j==x) f[i][j]=max(f[...原创 2019-04-26 15:37:26 · 135 阅读 · 0 评论 -
noip2008传纸条
传纸条(传送门)洛谷题目描述(样例数据自己找)此题我们分析一下,可以用dfs和动规来做此题。第一种做法是四维dp,这也是最好想的,设f[i][j][k][l]为从小渊传到小轩的纸条到达(i,j),从小轩传给小渊的纸条到达(k,l)的路径上取得的最大的好心程度和。完全可以换一个思路想,即求从给定的起点出发走到指定位置的两条最短严格不相交路线。那么特别显然,转移方程是 f[i][j][k...原创 2019-01-28 21:58:25 · 599 阅读 · 7 评论 -
P1622 释放囚犯
LOG P1622 释放囚犯传送门(洛谷)题目描述:输入数据:20 33 6 14输出数据:35分析:容易看出,每次给犯人吃肉都是一个区间,则很容易得出此题为一个区间动归区间动归的一般模板:f[i][j]=min(f[i][j],f[i][k-1]+f[k+1][j]+…)这里的f[i][j]是表示放出i号到j号的犯人最少给的肉,而我们找中介点k的时候,是已经将i,...原创 2019-06-11 20:44:48 · 193 阅读 · 0 评论 -
P1280 尼克的任务
P1280 尼克的任务(动态规划)传送门(洛谷)此题开始做的时候完全没有思路,由于我开始设f[i]为有i这么多时间拥有的最大空闲值,但发现f[i]与后面i的值有关系,则f[i]与f[i+x](1<=x<=总时间n - i)的值有关,但根据递推满足拓扑序,因此无法实现。所以需要倒着来。总时间:n设f[i]为i到n获得的最大空闲值。若当前没有任务:f[i]=f[i+1]+1 ...原创 2019-07-10 21:31:17 · 169 阅读 · 0 评论 -
P1387 最大正方形
传送门(洛谷)设f[i][j]f[i][j]f[i][j]为在i行j列所取得的最大值只有a[i][j]==1a[i][j]==1a[i][j]==1时,节点i,ji,ji,j才能作为正方形的右下角;对于一个已经确定的f[i][j]=xf[i][j]=xf[i][j]=x,它表明包括节点i,j在内向上x个节点,向左xi,j在内向上x个节点,向左xi,j在内向上x个节点,向左x个节点扫过的正方形...原创 2019-07-17 14:54:16 · 98 阅读 · 0 评论 -
P1077 摆花
传送门(洛谷)简单动态规划一题f[i][j]表示当到选前面i种植物选了j株植物f[i][j]表示当到选前面i种植物选了j株植物f[i][j]表示当到选前面i种植物选了j株植物f[i][j]+=f[i−1][j−k]f[i][j]+=f[i-1][j-k]f[i][j]+=f[i−1][j−k]为什么不能加上新植物因为你正在枚举如果算上新植物,新植物选多少株啊Code#include&...原创 2019-08-26 11:23:50 · 193 阅读 · 0 评论 -
P2279 [HNOI2003]消防局的设立
传送门(洛谷)根据题意设计状态f[i][0]从i向上覆盖两个节点f[i][0]从i向上覆盖两个节点f[i][0]从i向上覆盖两个节点f[i][1]从i向上覆盖一个节点f[i][1]从i向上覆盖一个节点f[i][1]从i向上覆盖一个节点f[i][2]恰好覆盖到if[i][2]恰好覆盖到if[i][2]恰好覆盖到if[i][3]表示可以覆盖到从节点i向上−1层的最小消防站个数f[i][3]表...原创 2019-08-23 11:55:20 · 87 阅读 · 0 评论 -
P1108 低价购买
传送门(洛谷)本题的题意就是求一个最长下降子序列和最长下降子序列和个数具体解释求个数rep(j,1,i-1) { if(f[i]==f[j] && a[i]==a[j]) { t[j]=false; } if(f[i]==f[j]+1 && a[i]<a[j]) { t[i]+=t[j]; } }当(i&a...原创 2019-08-20 17:51:32 · 75 阅读 · 0 评论