![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 64
菜菜魁
fighting!
展开
-
最小m段和问题(划分dp)
3278 最小m 段和问题 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold题解题目描述 Description给定 n 个整数(不一定是正整数)组成的序列,现在要求将序列分割为 m 段,每段子序列中的数在原序列 中连续排列。如何分割才能使这 m 段子序列的和的最大值达到最小?输入描述 Input Description 文件的...原创 2018-07-27 19:02:08 · 2968 阅读 · 0 评论 -
1090 加分二叉树
1090 加分二叉树 2003年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond题解 查看运行结果题目描述 Description设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tre...原创 2018-07-26 13:42:49 · 163 阅读 · 0 评论 -
1383 移动服务 (codevs)
1383 移动服务 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master题解题目描述 Description 一个公司有三个移动服务员。如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动。被请求后,他才能移动,不允许在同样的位置出现两个员工。从p到q移动一个员工,需要花费c(p,q)。...原创 2018-07-26 13:37:26 · 218 阅读 · 0 评论 -
数位DP入门
数位dp一般是给你个范围,让你求在这个范围内的数字是否满足一个特定的条件,因为情况太多,遍历一定会超时,所以要用到记忆话搜索,那么它和dp有什么关系呢?emmmm,可能所有的记忆化过程都可以和dp搭上关系吧。这种题的关键在于怎么建立dp公式来存储一个状态,其他部分是比较固定的。当然这种问题和数学方面结合比较多。下面举个简单例子。HDU 2089 杭州人称那些傻乎乎粘嗒嗒的人为62(音:...原创 2018-04-28 21:52:04 · 112 阅读 · 0 评论 -
树形依赖背包模板
金明的预算方案金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:<dl><dd> <colgroup>&l...原创 2018-04-28 21:36:07 · 307 阅读 · 0 评论 -
状态压缩DP入门
当一个状态是由上一状态得来的,我们可以用一般的dp来写,但当现在的状态是由多个状态得来的,那该怎么办。这个时候就应该用状压。一般用二进制数来表示哪些情况是成立,哪些不成立(也可能是三进制,四进制)。状压dp类型有很多,一般会与其他算法结合,下面我介绍几种基础的使用。 codevs 送外卖题目描述 Description有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户...原创 2018-04-28 21:22:03 · 1079 阅读 · 0 评论 -
线段覆盖问题
题目描述 Description数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大。输入描述 Input Description第一行一个整数n,表示有多少条线段。接下来n行每行三个整数, ai bi ci,分别代表第i条线段的左端点ai,右端点bi(保证左端点<右...原创 2018-04-28 16:32:02 · 3443 阅读 · 0 评论 -
nlogn的最长上升子序列
题目描述 Description给一个数组a1, a2 ... an,找到最长的上升降子序列ab1<ab2< .. <abk,其中b1<b2<..bk。输出长度即可。输入描述 Input Description第一行,一个整数N。第二行 ,N个整数(N < = 5000)输出描述 Output Description输出K的极大值,即最长不下降子序列的长度样例输...原创 2018-04-28 16:20:26 · 467 阅读 · 1 评论 -
斜率DP模板
在学习斜率dp之前,看过很多大牛的博客,推荐一篇帮助理解,斜率dp就是通过得到斜率判断趋势,把O(n*n)的问题变成O(n)的问题,减少时间复杂度。具体过程比较固定。1.找到关系表达式2.推出斜率式然后直接套模板就行了。当然有些问题比较复杂,大家灵活使用总结就行了。HDU 3507 Print Article Zero has an old printer that doesn't work w...原创 2018-04-30 11:14:10 · 326 阅读 · 1 评论 -
区间DP入门
区间dp,看名字其实会联想到划分dp,其实两者的关系并不大。划分dp是从头到尾划分解决,并且有划分数量,而区间dp没有这些限制条件,可以从任意区间开始,一直扩大到整个区间。不断递推求解。同样也是分两步去做。 首先:还是进行数据处理,比如用数组sum【i】【j】去储存i到j的和,或者是用别的方式处理并储存。 其次:建立dp方程推出结果。核心内容如下:for(int t = j; ...原创 2018-04-06 14:49:50 · 163 阅读 · 0 评论 -
划分DP入门
划分dp,顾名思义,就是把需要处理的数据划分成一段段,让这一段段满足解题条件。所以做这类题,一般分成两个部分。第一:数据处理,一般会借助辅助数组,根据题目要求,把数组处理成需要的内容。(打个比方,要求n个数字的m划分,使m个部分内部的和相乘,使乘积最大,我们就需要一个数组储存前i个和)。 第二:建立dp方程推出结果。方程很固定dp[i][j] = max(dp[...原创 2018-04-06 14:24:54 · 742 阅读 · 0 评论 -
HDU - 1074 Doing Homework
学dp的一定要对数据有一定的敏感性,判断一个题是否是dp直接通过判断是否存在数据的动态转移即可。n <= 20一般是状压, n <= 1000一般就是比较普通的划分区间背包之类dp,也可能要自己搭建dp方程,不过都比较简单。 n <= 1000000可能是斜率或者四边形优化dp,当然也可能是借助二分之类的优化,时间复杂度在O(n)或者O(nlogn)。这道题就是给你一堆科目,...原创 2018-10-01 13:52:42 · 129 阅读 · 0 评论