动态规划
樂_smile
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对我来说很难的dp UVA1625
其实dp可能本身并不难,主要是要找到状态转移方程这个是一个让我引发深思的dp两个字符串,两个,两个,什么东西都是两个,貌似两个,然后有先后拿的顺序就可以dp这似乎是一个规律,而且数据规模往往在 n^2可以解决的情况比如 1e3 ~ 5e3这个数据量话不多说看一下这道题的描述描述很简单就是两个字符串给你,然后你可以从第一个字符串和第二个字符串的头拿字母,然后凑成一个新的字符串然后一个字...原创 2020-01-25 18:06:19 · 314 阅读 · 0 评论 -
借一道题理解dp UVA11584
经常会出现看到一道题,不知道是dp,或者不知道怎么dp,知道dp了又不知道怎么初始化的问题。借这道题。把dp深入理解一下题目:把一个字符串分成尽可能少的回文串,问分成的最少的回文串数量为多少。例如:aaadbccb 可以分成三个回文串 aaa, d, bccb这是能分成的最少回文串的数量。为什么会想到dp?是否有明确的状态转移方程?这道题有一个状态转移方程如果令dp[i] 为...原创 2020-01-23 16:07:59 · 237 阅读 · 0 评论 -
基础动态规划问题之LCS和LIS
LCS:longest common sequence 即 最长公共子序列例如1 3 4 5 61 4 5 6 2最长公共子序列就是 1 4 5 6 即两个序列从左到右删除若干元素能得到的最长相同子序列动态规划思想从后往前设 dp(i, j) 表示第一个数字在i位置,第二个数字在j位置听不懂,没关系,我们模拟这个过程一开始由于两个序列都是长度为5因此从dp(5, 5)开始并...原创 2020-01-08 13:43:19 · 352 阅读 · 0 评论 -
分组背包的三个问题 HDU 3535
有N件物品和一个容量为V的背包。第i件物品的费用是w[i],价值是v[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。这是分组背包的第一类问题至多只能选一件所以状态转移方程为所以对当前组的dp全部设为之前的状态值for(int j = 0; j <= V; j++) { dp[k][j...原创 2019-12-24 18:16:13 · 253 阅读 · 0 评论 -
多重背包的应用问题 HDU 1059
Marsha和Bill拥有一系列大理石。他们希望将藏品分开,以使两者都享有相同的份额。如果所有的大理石都具有相同的价值,这将很容易,因为那样他们就可以将收藏品分成两半。但不幸的是,有些大理石比其他大理石更大或更漂亮。因此,玛莎(Marsha)和比尔(Bill)首先为每个大理石分配一个值,即一个介于1到6之间的自然数。现在,他们希望对大理石进行分割,以便使每个大理石都具有相同的总价值。不幸的是,...原创 2019-12-24 15:52:43 · 324 阅读 · 0 评论 -
完全背包问题的优化 Luogu 1853
题目背景约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益。银行工作人员向他提供了多种债券,每一种债券都能在固定的投资后,提供稳定的年利息。当然,每一种债券的投资额是不同的,一般来说,投资越大,收益也越大,而且,每一年还可以根据资金总额的增加,更换收益更大的债券。题目描述例如:有如下两种不同的债券:①投资额4000,年利息4000,年利息400;②投资额300...原创 2019-12-23 23:42:25 · 322 阅读 · 0 评论 -
01背包带顺序问题 HDU 3466
最近,iSea去了一个古老的国家。这么长时间以来,它是世界上最富有和最强大的王国。结果,即使这个国家不再富裕,这个国家的人民仍然感到非常自豪。商家是最典型的商家,每个商家仅售出一件商品,价格为Pi,但如果您的钱少于Qi,他们会拒绝与您进行交易,并且iSea评估每件商品的值为Vi。如果他有M个货币单位,那么iSea可以获得的最高价值是多少?输入中有几个测试用例。每个测试用例均以两个整数N,...原创 2019-12-23 18:12:53 · 503 阅读 · 0 评论 -
UVa 1347 旅行 (Tour)
分析:可以假想是两个人从一边出发,先让一个人走到2号点这样一开始的状态是dp(2, 1)dp(i, j) 的意思是 一个人走到i点一个走到j点后离终点的最短距离如果仅仅是这样,无法表示每个点都走过了因为从dp(i, j) 来看无法看出接下来可以走的点是否有 i + 1, 或者 j + 1也许i + 1, j + 1已经被走过了,那怎么办?让他们一步一步的走由于这两个人是等价的一个...原创 2019-12-20 16:33:11 · 255 阅读 · 0 评论 -
UVa 437 巴比伦塔(The Tower of Babylon)
分析:一个立方体可能有三种高,因此一个立方体可以当三个立方体用,因为立方体是不限数量的这个时候可以构建一个有向图,在O(n^2)内判断正方体的有向边,利用have_edge判断一个正方体是否可以放在另一个正方体之上,然后就dp就可以了,dp的状态是ans = max(dp[j][w] + rec[i][j].h, ans) 这里的ans是已经加好当前这个立方体高度的dp[i][j]这个转...原创 2019-12-20 16:18:28 · 264 阅读 · 0 评论 -
UVa 1025 城市里的间谍(A Spy in the Metro)
分析:用dp[i][j] 表示i时刻在j车站需要等待的最小时间用haveTrain[i][j][0] 表示i时刻在j车站是否有车向右开用haveTrain[i][j][1] 表示i时刻在j车站是否有车向左开由于最后的状态是确定的 dp[T][n] = 0;因此可以考虑从末态推初态对于一个时间 dp[t][i] t时刻在车站只能做3种决策等一分钟往左行车 (在有车的情况下)...原创 2019-12-06 17:07:47 · 223 阅读 · 0 评论
分享