
动态规划
死咸鱼的成长之路
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
01背包问题
问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入格式 输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。 以后N行每行两个数Wi和Vi,表示物品的重量和价值 输出格式 输出1行,包含一个整数,表示最大价值。 样例输入 3 5 2 3 3 5 4 7 样例输出 8...原创 2018-03-10 11:04:10 · 732 阅读 · 0 评论 -
UVa城市里的间谍
/************************************************************************/ /* 某城市地铁是线性的,有n个车站,从左到右编号1-n。有M1辆列车从第1站开始往右开 ,还有M2辆列车从第n站开始往左开。在时刻0,Mario从第1站出发,目的在时刻T会见车站n的一个间谍。 在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,...原创 2018-03-25 00:01:21 · 177 阅读 · 0 评论 -
Stamps and Envelope size UVA 242
假定一张信封最多贴5张邮票,求出最大连续邮资。输入S(S<=10) 和若干有邮票组合(面值不超过100) , 选出连续邮资最大 一个组合。如果有多个并列,邮票组合中邮票张数应最多,如果还有并列,邮票从大到小后字典序应最小。思路:暴力求解动态规划,遍历邮资。 对于邮票组合C, dp[i] 表示邮资i至少需要多少张来自于C的邮票才能组合起来。推导式:dp[i] = min(dp[i-x]+1 ...原创 2018-04-25 21:24:07 · 215 阅读 · 0 评论 -
POJ-3254 状压DP
http://poj.org/problem?id=3254题目大意:输入n行m列的01值。 1代表可放牛,0代表不可放牛,上下和同一行都不能有相邻。 全是0算一种情况。 求一共有多少种放法。 一道状压DP模板题,他的提升可见 1185(炮兵阵地)。首先恶补一下位运算,因为需要用位运算的技巧快速判断当前状态是否符合规定。状压DP(转态压缩动态规划)思想:保留了DP的利用上一状态的最优求当前状态的...原创 2018-05-11 21:13:29 · 182 阅读 · 0 评论 -
LIS
最长上升子序列问题两种复杂度 O(n^2) 和 O(nlogn) 思想很简单,以每一个元素为结尾, 内层循环判断大小,用cnt(i) 表示以下标i的元素为结尾的最大上升值,【0,i】区间内,已经求得最优解,典型的动归思想,利用局部最优求整体最优。cnt(i) = max( cnt(j)+1,cnt(i) ); 先附上较慢的算法O(n^2):int LIS(vector<int>...原创 2018-05-13 22:06:16 · 539 阅读 · 0 评论 -
POJ1050 To the Max
DescriptionGiven a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array.The sum of a rectangle is ...原创 2018-04-29 17:04:44 · 142 阅读 · 0 评论 -
矩阵连乘
矩阵要求前提:相邻矩阵满足相乘条件 c++版 //矩阵连乘问题: // 求A1...An连乘后 最小的相乘次数 #include<iostream> #include<memory.h> using namespace std; #define inf 0x3f3f3f3f #define max 100 // A1 A2 A3 A4 ...原创 2018-10-18 12:52:27 · 530 阅读 · 0 评论 -
LCS最长公共子序列
#include<iostream> #include<string> #include<vector> using namespace std; string s1 = "ABCDDEAD"; string s2 = "BBDCCDEA"; int len; //求s1 与 s2的最长公共子序列 int LIS(vector<vector<i...原创 2018-11-07 20:42:33 · 157 阅读 · 0 评论