随笔分类 -  ACM_背包

摘要:/* 有关这个问题画了太多时间了; 对自己真的很失望,思维能力太差了; 庆幸的是自己坚持看懂了; 希望下次碰到能够灵活运用;*/题目其实可以转换成背包问题;由于数据是-100000~100000;所以我们取数组 dp[100000*2];我们产生一个相对坐标的概念,100000相对坐标为0;99995相对坐标为-5;x的相对坐标为x-100000;由于每组数据的属性都为价值;而对于背包的容量是无限扩展的,(题目要求的就是 背包最大能装多少价值的东西)我们对此做个变形,对于smartness (S),funness(F),将S总和作为背包的容量(可扩展),将F总和作为背包... 阅读全文
posted @ 2013-04-15 21:05 简洁是智慧的灵魂 阅读(176) 评论(0) 推荐(0)
摘要:/*一直没复习;感觉以前学的忘光了*/#include #include #include #include #include #include #include #define maxn 3500 int cost[maxn],worth[maxn]; int dp[12885]; using namespace std; int max(int a, int b) { return a>b?a:b; } void ZeroOnePack(int cost, int worth, int V) { for(int j = V; j >= cost; j--) dp[j]... 阅读全文
posted @ 2013-04-14 16:36 简洁是智慧的灵魂 阅读(143) 评论(0) 推荐(0)
摘要:题目如下,这几天做了好几个背包问题了,做这个很快拍出代码了,和我昨天写的差不多,我就是稍微改了下代码。HDU 1059 01背包+完全背包=多重背包(2012-11-29 13:19)悼念512汶川大地震遇难同胞——珍惜现在,感恩生活Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8039Accepted Submission(s): 3330Problem Description急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你 阅读全文
posted @ 2012-11-29 16:05 简洁是智慧的灵魂 阅读(116) 评论(0) 推荐(0)
摘要:DividingTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10284Accepted Submission(s): 2866Problem DescriptionMarsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the m 阅读全文
posted @ 2012-11-29 13:19 简洁是智慧的灵魂 阅读(110) 评论(0) 推荐(0)
摘要:简单基本的01背包问题;http://acm.hdu.edu.cn/showproblem.php?pid=2602定义f[i][j]:在前i个bone中用容量为j的包选择bone所能得到的最大价值。设:第i个bone的volume为c[i],相应的value为w[i]。分析:将“前i个bone装进容量为j的包中所得到的最大价值”这个子问题的求解,考虑第i个bone,则会有两种策略:、不选择第i个bone,此时子问题的解为将“前i-1个bone装进容量为j的包中所得到的最大价值”即:f[i][j]=f[i-1][j];、选择第i个bone,则子问题的解为将“第前i-1个bone装入背包容量为j 阅读全文
posted @ 2012-11-27 21:26 简洁是智慧的灵魂 阅读(245) 评论(0) 推荐(0)
摘要:今天特地挑着背包问题做的,所以一直苦思冥想,这个价值是 浮点型啊,这怎么整?想到上一题的背包概率问题,加上参考其他人的做法,但不要理解错题意,总的概率不等于在各个银行不被抓概率的总和,在这里要做一个简单的转化,把每个银行的储钱量之和当成背包容量,然后概率当成价值来求。这里是被抓的概率,我们把它转化成不被抓的概率,然后这里的和就可以转化成乘积了,这样一来,我们就得到一个可以垒乘的状态转移方程(传统的背包上是垒加),我们求出抢j钱的最大不被抓概率,最后再枚举一下就行了。这就转化成了01背包问题。令f[i][j]表示在前i个银行中偷得的money为j时能够逃脱的最大概率,这样以来便可以写出状态转移方 阅读全文
posted @ 2012-11-27 21:10 简洁是智慧的灵魂 阅读(141) 评论(0) 推荐(0)
摘要:I NEED A OFFER!Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10553Accepted Submission(s): 3965Problem DescriptionSpeakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他 阅读全文
posted @ 2012-11-27 20:01 简洁是智慧的灵魂 阅读(155) 评论(0) 推荐(0)
摘要:Big Event in HDUTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14529Accepted Submission(s): 5111Problem DescriptionNowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't know that Computer College h 阅读全文
posted @ 2012-11-27 18:32 简洁是智慧的灵魂 阅读(106) 评论(0) 推荐(0)
摘要:今天看了看背包九讲的完全背包。估计是因为只记住了方程,没理解透的原因。照着写,还是错了;错就错在初始化的时候,我全部初始化为0了,然后用max;但是得不到答案。可是初始化出0位置以外,其他都为无穷大,取min,过了、、、额。。。去问问高手吧我。再研究了下,猛然回头,发现,是求背包装满的 最小价值、、、#include #include #include using namespace std; const int oo = 1000000000; //无穷大 int P[503],W[503],dp[10003] = {0}; //dp[0] = 0; int main() { int... 阅读全文
posted @ 2012-11-26 17:02 简洁是智慧的灵魂 阅读(97) 评论(0) 推荐(0)