![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
cug_ddc
这个作者很懒,什么都没留下…
展开
-
HDU 1024 max sum plus plus
题意 给两个数m和n,然后再给出n个数。在1到n个数中从中选出m个区间,每个区间求和,然后再吧m个区间求和使得这个和最大。区间的要求是不允许与其他的区间有任何交集,一个数也不行,另一个要求是这个区间可以是一个数。输出是这个最大和 分析 动态规划问题,我们要在n个数中取m个区间和最大,那么可以看看最后一个数是怎么取的。假设取的最后一个数j使得这几个个区间和最大,那么这个区间和最大情况可以分为两原创 2018-01-19 19:45:58 · 110 阅读 · 0 评论 -
HDU 1069 Monkey and Banana
题意 给定n(n 分析 首先,对于每一种木块的长宽高都有6种不同的排列方式,也就是说每个木块有6种摆放方式。因此当我们挑选木块的时候还需要选择排列方式,那这里就直接将排列方式也当成一种木块,那么搭建方式只能按照长宽高来。这样就最多有180个木块了。 动态规划解题,我们自顶向下的来看,摆出来的最高组合体长宽从上到下一定是递增的,我们不妨先将上述的木块排序,到时候在挑选的时候对原创 2018-01-20 14:11:02 · 159 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!
题意 输入一个数n,后面跟n个数。选择里面的递增的一些数,使其和最大。 分析 dp[i]选择第i个时和最大。很显然要求dp[i]的话必须知道前面最大的那个dp[k],但是有个限制条件就是要递增,也就是说a[k]dp[i]=max(dp[k]+a[i]) 这里之前遇到过一个小问题,就是忘记初始化dp数组为a[i]了,因为如果i前面没有满足条件的a[k]的话,那由转移代码可以看出dp[原创 2018-01-20 15:31:39 · 111 阅读 · 0 评论 -
HDU 1260 Tickets
题意 有k个人买票,可以一个一个的买,有k种等待时间cost[i],也可以相邻的两个人一起买,有k-1种等待时间dcost[i],问如何买票可以使得总时间最小。 分析 对于第i个人来说他买票有三种可能,自己单独买,和上一个相邻的伙计一起买,和下一个伙计一起买。但是他和下个人一起买与下个一个人和他一起买是一样的情况。因此这里只考虑上一个人的。这里这样定义dp数组dp[i]:第i个人买票时和他前...原创 2018-02-08 11:29:34 · 106 阅读 · 0 评论 -
蓝桥 K好数
题意 给两个数K和L,表示一个L位的K进制数,定义K好数为:这个L位数的任意相邻的两位的两个数都不能相邻。换句话说就是他们的差的绝对值不能为1。求这样的数一共有多少个 分析 动态规划问题,dp[i][j]表示第i位为j的情况下一共有多少个k好数。那么很明显dp[i][j]=sum(dp[i-1][m])(m范围是0…K且m不与j相邻)。 但是这有个问题,很显然dp[i][j]的i至...原创 2018-03-20 10:45:24 · 147 阅读 · 0 评论 -
POJ3176&&HDU2084 (线性dp数字三角形)
题意 给一个数n,输入一个n阶的数字三角形,开始从三角形顶端出发,每次向下走一步,只能走和他相邻的两个格子,每个格子有一个积分。问你最多能获得多少积分。 分析 入门级别的dp题,这里还是详细说下状态和转移吧。 首先dp[i][j]表示,从顶端到达(i,j)这个点的最大分数(要算上这个点的分值)。因为每次只能走下面相邻的两个,对于第一个数和最后一个数只能从上面一个走,所以直接加,中间的数...原创 2018-08-16 21:12:36 · 146 阅读 · 0 评论 -
POJ 2385(线性DP)
题意 现在有两棵树,在1~t分钟内,其中一棵树会掉落一个苹果。一开始你在第一棵树下,每次你只能接住当前在的那棵树上掉落的苹果,或者花费1个体力点瞬移到另一棵树下,接住那个苹果。你总共有w个体力点。给定t,w,每分钟苹果的掉落情况,问你最多能获得多少个苹果。 分析 状态定义为 dp[i][j]:前t分钟在花费j个体力点的情况下能获得的最多苹果数。 状态转移方程 dp[i][j]=max(...原创 2018-08-17 12:48:51 · 191 阅读 · 0 评论