
dp
使用dp算法解决的题目
luSpet
go、python后端开发
展开
-
HDU 1114 Piggy-Bank(完全背包)
题目大意: 有N种价值为P,体积为W的货币,放进体积为(F-E)的存钱罐中,求如果恰好装满,装的货币总价值最小是多少;如果装不满,输出This is impossible.思路: 完全背包,dp[i][j] 表示体积j内放入i种货币最小价值。 dp[i][j] = max(dp[i - 1][j - k * w[i]] + k * v[i], dp[i-1][j]) tle,优化为01背包,每次放...原创 2018-12-05 01:06:48 · 269 阅读 · 0 评论 -
HDU-1260 Tickets (简单dp)
题目大意: k个人排队,每个人单独买票要Si秒,和前面的人一起买要Di秒,求最快多长时间买完票 思路: dp[i]表示前i人买完票的最短时间 dp[i] = min(dp[i - 1] + s[i], dp[i - 2] + d[i]) 代码: #include<cstdio> #include<cstring> #include<algorithm&g...原创 2018-12-05 15:21:36 · 214 阅读 · 0 评论 -
HDU 1160 FatMouse's Speed(简单dp)
题目大意: n个权值为w,s的节点,选出最长的一个节点序列满足序列中任意节点w[i] > w[i+1]且s[i] < s[i+1] 思路: dp[i] 表示前 i 个中能找到的最大序列长度 pre[i] 节点i的前驱 先按其中一个权值排序,保证后面每个节点只用向一个方向找满足条件的 dp[i] = max{ dp[j] + 1 | j < i && w...原创 2018-12-08 10:43:15 · 225 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese (dp)
题目大意: 在一个n*n的网格中,每个格子中有一个权值,要求每次只能沿横竖方向走且当前格的权值要比上一格大,另外每次横竖移动的最大距离不能超过k 思路: dp[i][j]表示到(i,j)的最大权值和 dp[i][j] = max{dp[i + m][j + m] | abs(m) <= k && g[i + m][j + m] > g[i][j] } + g[i...原创 2018-12-08 11:25:31 · 161 阅读 · 0 评论 -
HDU 2859 Phalanx(dp)
题目大意: 26个字母组成的n*n的矩阵,找出最大子矩阵关于左下到右上对角线对称的最大阶数。 思路: (i,j)表示 i 行 j 列 dp[i][j] 表示(i,j)为矩阵左小角满足条件的最大子矩阵的阶数 显然若dp[i][j] = k, dp[i+1][j-1] = k - 1,反之,若dp[i + 1][j - 1] 为k,增加一阶使左下角为(i,j),则需要判断新增加的两条边对应是...原创 2018-12-08 21:27:59 · 220 阅读 · 0 评论 -
POJ 1015 Jury Compromise(dp,背包?)
题目大意: 由n个节点,每个结点具有权值p、d,从中选出m个结点,要求总p与总d值相差最小,且在差值最小的选法中总和最大 思路: dp[i][j][k]表示前i个节点中选j个差值为k时和最大的情况。 PS:最开始做的时候因为差值可能为负,和总是正的,所以想用dp[i][j][k]表示前i个选j个和为k时差最小的情况,后面一直wa发现虽然解决了下标问题,但当dp[i][j][k]可以为+1或...原创 2018-12-12 00:30:36 · 446 阅读 · 0 评论 -
POJ 1661 Help Jimmy (dp)
题目大意: 有n个平台,左端点为x1,右端点为x2,高为h。从x处,高y米跳下,每秒移动1米,一次下降不能超过MAX米,问最快何时到达地面。 思路: 到达每个平台左右端点的最快时间只由比它高的平台绝对,满足dp的性质,可以用dp解决。 dpl[i]到达第i个平台左端点最快时间 dpr[i]到达第i个平台右端点最快时间 第i个平台左端点 dpl[i] = min( dpl[i], dp...原创 2019-01-21 16:21:05 · 204 阅读 · 0 评论 -
CodeForces 1105C Ayoub and Lost Array (dp)
题目大意: 用 l - r 中的数组成一个n个数的序列且各数之和是3的倍数,求满足条件的序列数量 思路: 将模3的结果看作一种状态,n 个数字的状态由前 n - 1 个数字与第n个数字的状态决定,满足dp的性质 dp[i][j] 表示前 i 个数的和模3为 j 的序列数量 先找出dp[1][0]、dp[1][1]、dp[1][2]的值即 l - r 中的数模3结果分别为0、1、2的数的数...原创 2019-01-22 19:06:08 · 242 阅读 · 0 评论