
背包问题
南宫嘉俊
学生
展开
-
HDU 1171 Big Event in HDU(01背包)
题意:给出每个物体的价值和物体的数量,如何分使得A,B所得价值最接近并且A的价值不能小于B思路:将总和平分后,就是一道01背包题了#include#include#includeusing namespace std;const int maxm=1e6+10;int dp[maxm<<2];int v[maxm];int main(){ int n;原创 2015-11-10 23:34:57 · 274 阅读 · 0 评论 -
HDU 2602 Bone Collector(01背包)
题意:n个数,还有背包容积M,接下来两行,第一行代表这n个数的价值,第二行代表n个数对应的体积。求,背包最多可以装多少价值的东西#include#include#includeusing namespace std;#define LL long longconst LL maxm=1e4+10;LL dp[maxm];LL w[maxm];LL v[maxm];int main原创 2015-11-10 23:48:09 · 255 阅读 · 0 评论 -
HDU 2955 Robberies(01背包变形)
首先,这个题目的背包容量不能是概率.1.精度不清楚.2.把概率相加有什么意义呢?所以,转换一下,把所有银行的珠宝和当作背包容量,把小偷安全的概率当作物品价值.可以先求出背包尽可能满的情况下,安全概率最大的解.然后在这些解里面,找出安全概率满足大于1-P的并且价值最大的就行.题目读清楚.人给的是被抓住的概率和每个银行被抓住的概率.这个是不能直接用的.比如连续偷几个银行,就要分别算出安全的概率,这样概原创 2015-11-11 00:34:56 · 262 阅读 · 0 评论 -
HDU 2546 饭卡(01背包)
饭卡Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17430 Accepted Submission(s): 6070Problem Description电子科大本部食堂的饭卡有一种很诡异的设计,即原创 2015-11-11 14:59:33 · 343 阅读 · 0 评论 -
HDU 1864 最大报销额(基础01背包)
最大报销额Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20119 Accepted Submission(s): 5971Problem Description现有一笔经费可以报销一定额度的发票。允原创 2015-11-11 17:15:47 · 293 阅读 · 0 评论 -
POJ 3624 Charm Bracelet(01背包裸题)
#include#include#includeusing namespace std;const int maxm=1e6+10;int dp[maxm];int w[maxm];int v[maxm];int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF) { memset(dp,0,s原创 2015-11-12 11:33:38 · 354 阅读 · 0 评论 -
UVA 624 CD(01背包+dp打印路径)
A - CDTime Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %lluSubmit Status Practice UVA 624Appoint description: acmparand (2013-07-30)System Crawler (2015-11-10)De原创 2015-11-15 20:55:28 · 500 阅读 · 0 评论 -
HDU 1248 寒冰王座(裸完全背包)
裸完全背包问题,背包中装最大量,然后用n-dp[n];#include#include#includeusing namespace std;const int maxm=1e5+10;int w[10];int dp[maxm];int main(){ int t; scanf("%d",&t); while(t--) { int原创 2015-11-16 20:10:40 · 340 阅读 · 0 评论 -
HDU 1114 Piggy-Bank(完全背包问题)
题意:知道储钱罐里的硬币重量和各种面值硬币对应的重量,若能确定其中硬币的最小总价值,输出最小总价值,否则输出This is impossible.思路:需要注意最小总价值时硬币重量是否与已知相等的判断。#include#include#includeusing namespace std;const int maxm=1e4+10;int dp[maxm];int w[50原创 2015-11-16 20:02:31 · 349 阅读 · 0 评论