摘要:本系列最后一篇训练线性动规的基本套路的随笔,后面进阶更高级的动规类型入门(树形动规、区间动规、背包动规等). 1.正文:以下主要通过几道典型的例题再训练一下线性动规的做法。 复习一下: (1)题意分析; (2)基于分析数学建模; (3)判定是否可以符合使用动规的两大前置条件(最优子结构和无后效 ...
分类:
其他好文 时间:
2020-06-08 00:21:11
阅读次数:
89
#include using namespace std; const int maxn=1000+10; int n,k,w[maxn],v[maxn],dp[11*maxn]={0},nw[11*maxn],nv[11*maxn],cnt=0,c[maxn]; //01背包二进制拆分 //普通拆... ...
分类:
其他好文 时间:
2020-06-06 22:01:03
阅读次数:
85
#include using namespace std; const int maxn=1000+10,mod=1e9+7; int n,k,w[maxn],v[maxn],dp[maxn][maxn]={0},c[maxn][maxn]; //思路,开一个数组c,做辅助数组,因为重复只会发生在d... ...
分类:
其他好文 时间:
2020-06-06 22:00:44
阅读次数:
52
#include using namespace std; const int N=100+10; //二维代价的背包问题,就是dpi,j,k 太大了,用滚动数组 //注意滚动数组倒着遍历j int n,dp[N][N]={0},w[N],m[N],v[N],V,M; int main() { ci... ...
分类:
其他好文 时间:
2020-06-06 21:52:58
阅读次数:
61
#include using namespace std; //算法提高 种树 //这是01背包问题的变形 //环的处理方法 1.找到最小值的位置,预处理数组,比如 56 21 64 32 45 -> 21 64 32 45 56 21 //这样就相邻了而且21 21肯定不会同时选到 //2.还可以... ...
分类:
其他好文 时间:
2020-06-06 21:43:45
阅读次数:
71
#include using namespace std; const int maxn=1000+10; int n,k,w[maxn],v[maxn],dp[maxn][maxn]={0},c[maxn]={0}; int main() { cin>>n>>k; for(int i=1;i>w[... ...
分类:
其他好文 时间:
2020-06-06 21:18:34
阅读次数:
60
代码实现: goods = {'吉他':{'wei':1,'val':1500} ,'音响':{'wei':4,'val':3000},'电脑':{'wei':3,'val':2000}} def bag(goods,con): # con: 背包容量, goods,商品 # 获取最轻的物品重量 m ...
分类:
编程语言 时间:
2020-06-06 18:37:28
阅读次数:
72
第一题:请对下面的背包问题进行抽象化处理,写出它的数学模型(数学建模):有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 第二题:请对下面的数组分割问题进行抽象化,写出它的数学模型(数学建模):有 ...
分类:
其他好文 时间:
2020-06-06 13:15:12
阅读次数:
74
题目: 正文: 题目为多重背包,需要注意的点就是如果次数为0的话就把它变成一个极大的数,还有就是时间的计算。 也没什么好说的,直接上代码吧。 Code: #include <iostream> #include <cstdio> #include <cstring> #include <algori ...
分类:
其他好文 时间:
2020-06-06 00:52:12
阅读次数:
97