
DP
Bil!
一个自学的IT菜鸟。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划经典问题
数塔: 题目链接:https://cn.vjudge.net/problem/HDU-2084 题目:https://blog.youkuaiyun.com/weixin_45045689/article/details/93739698 题解:在数塔上,每个位置上经过的结点的数字之和最大,作为状态。 转移:与该状态相关连的其他状态怎么转移到该状态。从题目上可以看到,该结点的数字之和只取决于该结点上一层与该结点相邻的那两个结点,所以,要通过 该结点上一层与该结点相邻的那两个结点 的状态转移到 该状态。 这样的原创 2020-07-24 20:31:29 · 168 阅读 · 0 评论 -
LeetCode 硬币
题目链接 题意: 给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。 题解: 这题和 简单整数划分问题 思路一样。 可以把题目划分为子问题,只用一种硬币 来表示n分 , 用两种硬币来表示 n 分。 这样分有最优子结构和无后效性的特质。 进而可以确定状态用 前 j 种硬币表示i 分 的方法数。dp[i][j] 代码: class Solu...原创 2020-04-25 11:37:47 · 365 阅读 · 0 评论 -
AreYouBusy HDU - 3535 (混合背包)
题意: 有n个集合,每个集合中有m个元素。求在背包容量为T的情况下,取得元素的总“价值”最大。 这些集合又分为3种类型(用于限制取元素): 0.在这个集合中,至少取一个元素。 1.在这个集合中,最多取一个元素。 2.在这个集合中,可以任意数量的元素。 题解: 混合背包。 对于不同的集合(限制),用不同的方法(主要差别在怎么处理上次得到的最优解)。 对于类型 1 的集合。上次的最优解是不能更改的。 ...原创 2020-02-16 11:07:25 · 177 阅读 · 0 评论 -
Gold miner HDU - 4341(分组背包)
题意: 黄金矿工,在时间T内,在给定的矿石中获得其中部分矿石的最大价值和。 如果矿石在同一条线上,要先把线上的前面的矿石拿走,才可以接着拿后面的矿石。 题解: 把每个矿石的斜率求出来,当斜率相同,就是在同一条直线上了。因为横坐标可能为0.所以求的是斜率的倒数。 对于数据中的每个斜率,就为一组物品。每组物品要么取一个,要么取两个。。。。 #pragma GCC optimize(2,"Ofast",...原创 2020-02-14 15:42:41 · 153 阅读 · 0 评论 -
01背包常数优化问题
为什么不用到Value[i]而到Time - sum{c[i…n]} 就可以了??? 如果Time - sum{c[i…n]} 还大于 Value[i] 当然不用到 Value[i]了, 毕竟如果后面所有物品都选了,怎么减也到达不了当时间剩余小于Time - sum{c[i…n]}的情况哈! 可以试试这题: https://vjudge.net/problem/OpenJ_Bailian-2773...原创 2020-01-25 22:42:15 · 294 阅读 · 0 评论 -
P1048 采药(01背包模板)
我通过这题学习了01背包。我的代码可能没这么友善哈,见笑了。 无优化 #pragma GCC optimize(3,"Ofast","inline") #include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<vector> #inc...原创 2020-01-25 22:18:45 · 183 阅读 · 0 评论 -
Help Jimmy OpenJ_Bailian - 2978 (动态规划)
Help Jimmy OpenJ_Bailian - 2978 解析 Jimmy 要下到下一块板,不是在当前板子的左侧下去,就是在当前板子的右侧下去。所以要到达每块板子最左侧和最右侧的时间。 这题可以从上往下找到达板子边缘最小时间 或 从下往上找板子边缘的最小时间。 从上往下找到达板子边缘最小时间:用了递归 #include<iostream> #include<cstdio&g...原创 2020-01-08 22:14:29 · 200 阅读 · 0 评论 -
不用DP实现 数塔
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中...原创 2019-06-26 15:17:07 · 199 阅读 · 0 评论