随笔分类 - 动态规划
摘要:话说宁波市的中小学生在镇海中学参加计算机程序设计比赛,比赛之余,他们在镇海中学的各个景点参观。镇海中学共有n个景点,每个景点均有若干学生正在参 观。这n个景点以自然数1至n编号,每两个景点的编号均不同。每两个景点之间有且只有一条路径。选择哪个景点集中所有的学生,才能使所有学生走过的路径之和最小呢?
阅读全文
摘要:学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows操作基础》之后才能
阅读全文
摘要:这种动归有很多名字,插头DP是最常见的 还有基于连通性的动态规划 轮廓线动态规划等等 超小数据范围,网格图,连通性 可能算是状态压缩DP的一种变式 以前我了解的状压DP用于NP难题的小数据范围求解 这里说一下哈密顿回路的概念: 然后是一道插头DP的入门题 一个网格图中有若干障碍格子,求其他格子的哈密
阅读全文
摘要:之前做过的传纸条那道题就是双重动态规划的典型应用,题意就不描述了,直接贴一下以前写过的,经典代码 我记得当时写过记忆化+dp的,这里不贴了 Codevs1444 把歌曲分堆,然后各自求最优装载,分别用01背包算法。 由于不知道如何分堆才会产生最优解,所以第一次动态规划算出每个区间段的最优装载,然后第
阅读全文
摘要:对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章 https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html 这里介绍最简单的一种,LIS的求法 其实就是二分,找单调性来二分 HDU19
阅读全文
摘要:普通的树有n个点和n-1条边 如果在这个的基础上添加一条边,就变成了基环树 对它进行dp的时候,考虑删除一条边转换成普通树 对于每一棵环套树,先dfs找环 找到环以后断环为链并将断开的两个点强制其中一个点为根且不选做一次树形DP,对另一个点做同样操作 取两次结果最大值加入ans BZOJ1040的题
阅读全文
摘要:虚树可以看做是对树形动态规划的一种求解优化 对于需要求答案的点p,只保留对答案有影响的节点,从而减少时间 BZOJ2286 dp[i]=min(val[i],Σdp[j](j为i的儿子)),val[i]表示将i和根节点分离的代价 方程为什么这么写呢?val也就是从当前i到根节点的边权的最小值 为了让
阅读全文
摘要:BZOJ3036 给定一张有向无环图,起点为1,终点为N,每个点i有ki条出边,从每个点走其中一条出边的概率是1/ki,求从1到N的期望步数 我们注意到一点,走每条边都是等概率的,那么就相当于 给定一个DAG,随机走,求起点到终点的路径长度期望 那么只需要知道经过每一条边的期望次数,乘以边权之后再求
阅读全文
摘要:有n种物品, 第i种物品有a个. 不同种类的物品可以互相区分, 但相同种类的无法区分 从这些物品中取出m个, 有多少种取法 求多重集组合数,并没有让枚举多重集组合 可是枚举应该怎么枚举呢?哈希判重? dp[i][j] 表示前i种物品,一共拿了j个物品的方法数 为了得到dp[i][j],那么可以从前i
阅读全文
摘要:例子当然是王八棋这道题,这道题以前是写烂了 先来一个大暴力,zlw教的暴力~~ 当时真是幼稚地连搜索都写不利索 多维动态规划的意思就是状态有好几个维度,我们在定义状态的时候要开多维数组 这道题里面四种卡牌用了多少了是四种可行的状态,还有一个是当前走到了哪个格子,作为阶段 f[][][][][],然后
阅读全文
摘要:记忆化搜索和递推都是为了解决子问题重复计算而产生的 虽然动态规划的转移图是一个DAG,但是一个状态可以被其他的状态复用多次 因此为了提高动态规划的效率,记忆化搜索便产生了 但是有时候,状态转移图是不容易描述的,这个时候我们就不能再称记忆化搜索是动态规划的一种实现了 它纯粹就是为了不再重复计算而已 比
阅读全文
摘要:据说DAG是动态规划的基础,想一想还真的是这样的,动态规划的所有状态和转移都可以归约成DAG DAG有两个典型模型,一个是嵌套矩形问题一个是硬币问题,这里仅介绍一个嵌套矩形问题 等二轮复习的时候再补上 NYOJ16,南阳OJ很不错的样子嘛 如果矩形X可以嵌套到矩形Y中,连有向边X->Y 求DAG的最
阅读全文
摘要:先给出状态转移方程: 这个可以优化到O(n^2)的时间复杂度,然后再滚动数组一下,空间复杂度就可以是O(n)的,这里直接给出最优实现策略 比SAM简单多了
阅读全文
摘要:还是直接上转移方程: 动规只能解决O(n^2)的最长公共子串问题 使用后缀数组或者SAM可以高效地解决这个问题 所以,对于这个问题,动规的代码就不给出了 直接给出SAM的实现,也为以后学习SAM打下一个基础 具体做法是,对一个串建后缀自动机,把另一个串在自动机上跑,维护一下最大的匹配的长度就好了 我
阅读全文
摘要:先上状态转移方程,还是很容易看明白的 例题是Codevs的1862,这个题不是实现了方程就可以了的,还要完成一个事情那就是计数,数一数到底有多少个最长公共子序列 在这里我们用dp记录长度,用f记录个数 由于输入是以“.”结尾的,所以读入的时候有些许的变化 这样读入的时候真正的字符串的下标是从a+1开
阅读全文
摘要:最小生成树是最小斯坦纳树的一种特殊情况 最小生成树是在给定的点集和边中寻求最短网络使所有点连通 而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小 BZOJ2595 题意是给定一个棋盘图。告诉你景点的位置 然后让你在一些格子上放置指定数量的志愿者使得景点之间可以连通 问你最少需要派遣
阅读全文
摘要:数位dp一般应用于: 求出在给定区间[A,B]内,符合条件P(i)的数i的个数 条件P(i)一般与数的大小无关,而与 数的组成 有关 例题是一道BZOJ1833,让求出区间所有整数每个数字出现的次数 递推出f[i][j][k]表示长度为i开头j的所有数字中k的个数 这个东西让我想起了大模拟,高精度
阅读全文
摘要:典型例题有三道: 没有上司的舞会 选课 景点中心 我们可以把动态规划的状态和转移描述成DAG 对于有根树来说,如果我们规定边的方向由父节点指向叶子节点 或者是由叶子节点指向父节点(奇葩) 那么它也是一个DAG 如果状态和转移都发生在特殊的DAG,树上 叫做树形动态规划 在树规中,父节点的值通过所有子
阅读全文
摘要:划分型动态规划之数的划分 先贴上2014年10月31日的那份代码,甚至怀念当时在机房YY这道题的场面 高中最快乐的时候。。 很可爱的一道题 今天的重点是划分型动态规划 所谓的划分,可以说成一种模型吧。我可以把转移方程称为2D/0D么
阅读全文
摘要:状压DP可以用在NP问题的小规模求解中(不理解,感觉和可以搜索的题很类似) 如果状态是个网格,数据范围很小,基本锁定状压DP 例题是BZOJ1725 题意是这样的,给定一个黑白图,然后种田,要求田与田之间不能挨着 而且只能往黑格子上种田 这个的意思让我联想到了棋盘动规的骑士游历和过河卒 或者是完全背
阅读全文

浙公网安备 33010602011771号