学不会的DP
Miserable_ccf
Stay hungry ,stay foolish
展开
-
『经典DP入门』LCS 最长公共子序列问题
最长公共子序列问题(Longest Common Subsequence problem):给定两个序列X = <x1,x2,...,xm>和Y = <y1,y2,...,yn>,求X和Y长度最长的公共子序列。注:本文的大多数概念及求解方法来自《算法导论》使用动态规划求解LCS问题过程:一、刻画最长公共子序列的特征LCS的最优子结构定理:设X={x1,x2,...原创 2019-02-27 19:26:58 · 7086 阅读 · 2 评论 -
dd大牛的背包九讲-背包问题汇总
背包九讲 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背包问题问法的变化 附:USACO中的背包问题 前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作...转载 2018-10-22 18:51:48 · 249 阅读 · 0 评论 -
快乐暑假(二)——动态规划方法的编程实验
什么时候时候要想到动态规划动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具最优值的解。当需要求解某种最优性质问题的时候,优先想到贪心,分治,动规。动态规划的三个特性1.最优化原理 (最优子结构性质) 最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决...原创 2019-08-03 00:21:59 · 224 阅读 · 0 评论 -
2019牛客暑期多校训练营(第一场)E.ABBA
https://ac.nowcoder.com/acm/contest/881/E题意:构造一个长度为2*(n+m)的AB串,使这个串可以划分成n和“AB”的子序列和m个“BA”的子序列,求方案数量思路:首先注意:子序列不是子串 只需要相对位置正确 不需要是连续的确定状态:求什么就设什么,设dp[i][j]为前i个A+前j个B可以组合的合法字符串的数量,那么我们最终要求的dp[n+...原创 2019-07-19 16:44:30 · 138 阅读 · 0 评论 -
口袋妖怪(monster)——二维费用背包
口袋妖怪(monster)『题意描述』最近鹅厂出了某款收藏游戏。顾名思义,该游戏就是要收藏小精灵。如果没玩过口袋妖怪的可以参考如下规则:(1)玩家可以捕捉(收藏)视野范围内的所有精灵。(2)每个精灵有一定的能力值c。(3)每个精灵需要一定的活动空间v,即四次元口袋中剩余的活动空间需要大于v。(4)为了可持续捕捉(收藏),每天最多只能抓k个精灵。壮壮爱上了这款游戏,为了讨...原创 2019-06-29 16:15:19 · 397 阅读 · 0 评论 -
『多维DP』P1417 烹调方案
洛谷传送门:https://www.luogu.org/problemnew/show/P1417题意简述:总时间T,有n种食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间。问在T时间内最大美味指数为多少?乍一看题目,很容易联想到0-1背包,仔细看此题的权值是不固定的,所以选取次序的不同会导致最大权值的不...原创 2019-06-18 18:27:36 · 183 阅读 · 0 评论 -
『多维DP』P1387 最大正方形
洛谷传送门:https://www.luogu.org/problemnew/show/P1387题意简述:在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长。一、确认状态求什么就设什么,确定状态dp[i][j]为以(i,j)点为右下角的矩形里的最大不包含0的最大正方形的边长。二、刻画最优子结构这里画一个我自己发现的规律:一个N*N的正方形 是由右下角...原创 2019-06-17 14:40:37 · 326 阅读 · 0 评论 -
『多维DP』P1006 传纸条——四维DP
洛谷传送门:https://www.luogu.org/problemnew/show/P1006题意简述:有一个m*n的矩阵,从左上角走到右下角(只能向右向下走)以后,再返回左上角(只能向上向左走),不可走重复的点,每个点有一个权值,问经过的路径最大权值是多少?一、定义状态可以把题目转化为从左上到右下找两条不重的路,求两条路的最大权值,求什么就设什么,确定状态dp[i][j][p][...原创 2019-06-17 10:03:51 · 236 阅读 · 0 评论 -
『线性DP』P1140 相似基因
洛谷传送:https://www.luogu.org/problemnew/show/P1140题意简述:给两个碱基序列A和B和一个碱基匹配的相似度表(权值表),找出两个序列匹配的相似度(最大权值和)。这一题在洛谷是普及的难度,但困扰了很久,有点难受。既然是DP,按照套路来分析一波:一、确定状态 求什么就设什么,确定状态dp[i][j]为 当A中的前i个元素和空字符组...原创 2019-06-16 15:10:44 · 196 阅读 · 0 评论 -
【例9.15】潜水员——二维费用背包
【题目描述】潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量:3 36 12010 25 129...原创 2019-05-19 13:08:45 · 3134 阅读 · 0 评论 -
混合背包模板
【题目描述】一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。【输入】第一行:二个整数,M(背包容量,M...原创 2019-05-18 21:17:42 · 113 阅读 · 0 评论 -
我是一名铺砖匠——铺砖问题汇总(DP)
鉴于多次遇到铺砖问题,因此目前遇到对此类问题进行总结:铺砖问题主要分类:1.简单的一维铺砖问题2.二维铺砖问题 2*1的砖是否可以铺满N*M的地面3.二维铺砖铺满有多少种方法 a.2*1的砖铺满2*M的地面有多少种方法? b. 2*1的砖铺满N*M的地面有多少种方法?『...原创 2019-05-24 11:00:47 · 8591 阅读 · 4 评论 -
HDU 2079 选课时间——动态规划
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2079这个题目乍一看像是个多重背包问题,仔细一想还真是个多重背包问题,只是没有权值而已。这样,我们的状态就要改变了。求什么就设什么状态:dp[i]表示已经组合好i个学分的组合数刻画子结构特征:新的高学分的组合数都可以转化为低学分的和。举个栗子:目标4学分 2种学分种类1学...原创 2019-03-10 13:36:06 · 363 阅读 · 0 评论 -
再谈三种基础背包问题
背包问题是经典的动态规划问题,现在来复习一下。dd大牛的背包九讲将背包问题分为八类:01背包问题完全背包问题多重背包问题 混合三种背包问题二维费用的背包问题分组的背包问题有依赖的背包问题 泛化物品 。本次主要复习内容为前三类的基础背包问题。1.0-1背包 有n种物品,每种只有一个.第i种物品的体积为Vi,重量为Wi.选一些物品装到一个容量为C的背包,使得背包内物品在...原创 2019-03-09 10:45:05 · 433 阅读 · 0 评论 -
『经典DP入门』LIS最长上升子序列的三种不同DP方法
最长上升(也有译作递增)子序列问题简称LIS(Longest Increasing Subsequence)问题,其数学模型如下:设A =是n个不同的实数的序列,A的上升子序列是这样的一个子序列L =<>,其中且。求最大的m值。一共有三种DP方法可用于最长上升子序列问题将LIS问题转化为LCS问题; 经典DP方法; 二分查找。『方法一』转化为LCS问题...原创 2019-03-06 17:15:14 · 483 阅读 · 0 评论 -
『蓝桥杯』2018蓝桥初赛 测试次数(扔手机)——动态规划
『题目描述』x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7层扔下去没摔坏,但第8层摔...原创 2019-02-28 18:26:56 · 4649 阅读 · 9 评论 -
DP理论基础
(一)基本思想动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问...转载 2019-02-16 16:50:45 · 633 阅读 · 0 评论 -
『经典DP入门』三种石子合并问题
『问题概述』石子合并问题是经典的DP问题。首先它有如下3种题型:1)有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动任意的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成 ...原创 2019-02-17 22:27:42 · 2691 阅读 · 1 评论 -
『经典DP入门』洛谷 P1280 尼克的任务
『题目描述』尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任...原创 2019-01-19 16:25:17 · 196 阅读 · 0 评论