
背包问题
dtwd886
这个作者很懒,什么都没留下…
展开
-
杭电1059-多重背包
为多重背包模板题#include #include #include using namespace std;#define maxn 500005int dp[maxn];int data[10];int m;void CompletePack(int v,int w){ for(int i=v;i<=m;i++) dp[i]=max(dp[i],dp[i-v]+w);原创 2016-04-04 12:42:32 · 609 阅读 · 0 评论 -
杭电2955-0-1背包
此题应该转化为安全率,然后再用0-1背包做,安全率第一次大于一定值的输出。#include #include #include using namespace std;int M[110];double X[110];double dp[10100];int m,N;void ZeroOnepack(){ for(int i=1;i<=N;i++) { for(int原创 2016-04-04 16:40:21 · 481 阅读 · 0 评论 -
杭电2602-0-1背包模板题
#include #include #include using namespace std;int N,V;int w[1010],v[1010];int dp[1010];void ZeroOnepack(){ for(int i=1;i<=N;i++) { for(int j=V;j>=w[i];j--) { dp[j]=max(dp[j],dp[j-w[i原创 2016-04-04 16:49:50 · 311 阅读 · 0 评论 -
0-1背包和完全背包是如何从二维数组压缩到一维数组的
0/1背包的主要思路就是:这件物品,取还是不取。用一个二维数组dp[i][v]来表示对第i个物品,背包容量为v时的情况。c[i]表示第i件物品的体积,w[i]表示第i件物品的价值。那么考虑第i件物品取与不取:如果不取,那么就可以转化为i-1件物品、容量仍然为v、价值没有增加的情况(dp[i-1][v]);如果取,那么转化为i-1件物品、容量减去第i件物品的体积后剩余容量、价值加上第i件物品的价值后转载 2016-05-04 19:46:39 · 775 阅读 · 0 评论 -
杭电2159-二维费用的背包问题
#include #include #include using namespace std;int n,m,k,s;int v[110],w[110];int dp[110][110];void TwoVictoryPack(){ int i,j,x; for(i=1;i<=k;i++) //枚举怪物数 { for(j=1;j<=s;j++) //枚举杀怪数原创 2016-05-04 21:31:11 · 646 阅读 · 0 评论 -
杭电1712-分组背包问题
#include #include #include using namespace std;int dp[110];int n,m;int a[110][110];void SortPack(){ int i,j,k; for(i=1;i<=n;i++) //枚举分组 { for(j=m;j>=1;j--) //枚举天数 { for(k=1;k<=j;原创 2016-05-04 21:32:13 · 347 阅读 · 0 评论 -
dd大牛的《背包九讲》
P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便转载 2016-05-04 21:36:12 · 312 阅读 · 0 评论