摘要: 题目描述:编号为0~n-1的n个位置上分别有价值为w[0]~w[n-1]的n个物品,现在要选出一些物品,使得获得的价值最大,约束条件是:任意连续的m个物品中选取的物品数量不超过q。其中nq, 那么由s不可能转移出任何有效状态.2.如果bitcnt(s)>1, 有转移方程:dp[i+1][ns] = ... 阅读全文
posted @ 2015-02-17 22:20 __brthls 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 完全背包问题跟01背包问题的区别在于:对每种物品,在01背包中可以选取0个或者1个,而在完全背包中,每种物品都可以选取任意多个。状态定义:dp[i][j]表示:解决了第0~i中物品的选取问题,已消耗容量为j时,获得的最大价值。状态转移:这里的状态转移有两种写法,第一种写法较容易理解,第二中写法理解起... 阅读全文
posted @ 2015-02-17 17:55 __brthls 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 01背包描述的是这样一个问题:有一个容量为m的背包,有n个物品,第i个物品的重量为w[i], 价值为v[i]。现在要往背包中装这些物品,使得最后所获得的总价值最大。状态定义:dp[i][j]表示:解决了第0~i个物品的选取问题后,背包已消耗容量为j时,所获得的最大价值。状态转移:dp[i][j] =... 阅读全文
posted @ 2015-02-17 16:00 __brthls 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 数字三角形是一个典型的DP问题。下面是分别采用记忆化bfs和DP的代码:采用记忆化bfs: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 #define MAXN 201 8 9 int pr... 阅读全文
posted @ 2015-02-17 15:00 __brthls 阅读(133) 评论(0) 推荐(0) 编辑
摘要: trie图用于解决多模式匹配问题。设有N个长度不超过L的模式串,匹配串长为M,那么用trie图解决多模式匹配问题的复杂度为O(N*L+M).思路:trie图的基础是trie树。1.用trie树实现多模式匹配 首先建立N个模式串的trie树。设匹配串为s,我们枚举匹配起始位置i,在trie树中依次去... 阅读全文
posted @ 2015-02-17 13:29 __brthls 阅读(179) 评论(0) 推荐(0) 编辑