
三、ACM_背包九讲(dp)
程序员的冷浪漫
爱好coding对世界充满好奇心
展开
-
背包九讲学习--基础背包
第一讲 01背包 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 算法复杂度:O(VN) PRO zero one pack :原创 2013-08-06 08:22:19 · 860 阅读 · 0 评论 -
hdu 2955 Robberies(01背包)
hdu 2955 Robberies(01背包)原创 2014-08-13 21:32:09 · 669 阅读 · 0 评论 -
Uva 11137 Ingenuous Cubrency(整数划分方案 背包)
Uva 11137 Ingenuous Cubrency(整数划分方案 背包)原创 2014-08-13 10:26:39 · 766 阅读 · 0 评论 -
hdu 2159 Fate(完全背包 最多取K件)
hdu 2159 Fate(完全背包 最多取K件) #define M 102 struct monster{ int v,cost; }f[M]; int m,n,K,need; int dp[M][M]; void solve() { CLS(dp,0); for(int i=0;i<n;i++) for(int j=f[i].cost;j<=m;j++)原创 2014-08-13 16:02:17 · 726 阅读 · 0 评论 -
HDU 2191 珍惜现在,感恩生活(多重背包)
#define M 102 struct rice{ int cost,w,num; }r[M]; int m,n; int dp[M]; void CompletePack(int cost,int v) { for(int i=cost;i<=m;i++) dp[i]=max(dp[i-cost]+v,dp[i]); } void ZeroOnePack(int原创 2014-08-12 14:02:30 · 772 阅读 · 0 评论 -
Hdu2639_Bone-Collector-II
这道题求的是:01背包的第K优解,意思是,容量为V的背包,能装的物品价值由大到小排序,第K大的是? #include #include #include using namespace std; #define M 102 struct shop{ int cost[M],value[M]; }p; int dp[1001][35],N,V,K; /** * 01背包求第K优解,意思原创 2013-08-24 16:23:39 · 720 阅读 · 0 评论 -
Hdu2602_Bone-Collector
这道题是最基础的01背包问题; 解法如下: #include #include #include #include using namespace std; #define M 1002 struct shop{ int cost[M]; int value[M]; }p; int n,dp[1002],v; void zeroOne_pcak(){ int i原创 2013-08-24 16:20:46 · 673 阅读 · 0 评论 -
hdu2546饭卡-01背包
当卡上的金额大于等于5时,可以用5元去买任意价格的菜,所以当然是用这5元去买最贵的菜了,剩下的问题就是,求剩下的m-5元能买到的最高的价值总量。原创 2013-08-11 08:39:08 · 862 阅读 · 0 评论 -
整数划分解报告(背包求解)
1.问题描述: 给定一个正整数N和K 1.> 将n划分成若干正整数之和的划分数。 2.> 将n划分成k个正整数之和的划分数。 3.> 将n划分成最大数不超过k的划分数。 4.> 将n划分成若干奇正整数之和的划分数。 5.> 将n划分成若干不同整数之和的划分数。 2.问题分类:总的来说这些都原创 2013-08-17 17:20:39 · 1122 阅读 · 0 评论 -
01背包能够取到的值>=m的最小值
问题如下: 服装店总共有n件衣服,价格分别为P1, P2, …, Pn。店铺开展满500减100活动, 限定顾客每件衣服只能买一件。顾客如何选择衣服搭配最划算(选购衣服价格总和大于500情况下的最小值)。 题意:n件衣服,能够拼出的价值总和>=500 的最小值。 思路:先找到一个可行解cap,把cap 当做背包容量,然后做01背包。 如果金额为小数,cap扩大100倍就好了。 #原创 2015-04-22 12:19:16 · 2243 阅读 · 0 评论