随笔分类 -  动态规划

摘要:题意 有五种硬币不限数量,面值分别是1,5,10,25,50。问你用这些硬币组成n元有多少种方式,硬币的总数要不超过100个。 思路 状态表示 如果类比01背包,那么至少我们可以认为应该用一个二维数组来记录状态,在背包问题中,我们用dp[ i ][ j ]来表示“前 i 件物品装入容量为 j 的背包 阅读全文
posted @ 2021-11-15 22:13 tsrigo 阅读(140) 评论(0) 推荐(0)
摘要:我目前的水平还做不到从理论上分析,只能从现象出发来说明可行性。 01背包 优化前 for (int i = 0; i <= N; ++i){ for (int j = 0; j <= V; ++j){ dp[i][j] = dp[i - 1][j]; if (w[i] > j) dp[i][j] = 阅读全文
posted @ 2021-11-15 09:23 tsrigo 阅读(58) 评论(0) 推荐(0)
摘要:现在的我 #include<iostream> #include<algorithm> using namespace std; int dp[50][20005] = {0}; int main(void){ int V, n; int v[50]; cin >> V >> n; for (int 阅读全文
posted @ 2021-11-14 20:57 tsrigo 阅读(35) 评论(0) 推荐(0)
摘要:万恶之源 前言 本来只是打算记下笔记的,但是发现越写越多,心想要不就顺便改成题解吧,于是有了此文,本文也参考了一些题解,因此本文仅作为其它题解的一些补充,一些做题可能遇到的问题。 正题 1. 这是一道区间动态规划(最重要的还是要有) 区间dp:区间dp就是在区间上进行动态规划,求解一段区间上的最优解 阅读全文
posted @ 2021-11-01 17:14 tsrigo 阅读(84) 评论(0) 推荐(0)
摘要:背景 最近在学习动态规划==真是个麻烦的小机灵鬼 做到的一道小小的题 P1048 采药 做法 (1)直接DP(一堆离题的废话) 这道题很显然就是一道01背包问题但是它的确是我做的第一道DP题 所以首先设计状态和写出状态转移方程 这俩货是真的难搞 一开始我设计的是记f(x)为采了前x种药材的最大价值, 阅读全文
posted @ 2021-11-01 17:10 tsrigo 阅读(45) 评论(0) 推荐(0)
摘要:定义 dp[ i ][ j ]表示s1...si与t1...tj对应的LCS长度 转移(缩小问题规模) 当s[ i+1] = t [ j+1]时,dp[ i + 1 ][ j + 1 ] = dp[ i ][ j ] + 1时。 因为这个元素构成了LCS的一部分,删除它就是删除了LCS的一部分。 对 阅读全文
posted @ 2021-10-31 21:45 tsrigo 阅读(39) 评论(0) 推荐(0)