![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
背包
南山小翁
活在当下,要有思想,每个人不是随随便便就能成功!
展开
-
poj 3628
上午用背包做 没想出 然后直接暴搜 AC 下午 突然想出一个方法 果断AC #include #include #define Max 20000010 int dp[Max]; int N,B; int weight[30]; int max(int a,int b) { return a>b?a:b; } int main() { int tem;原创 2013-03-29 17:26:07 · 522 阅读 · 0 评论 -
数位DP 《 菜鸟与大牛在于一念之间》
hdu3555 #include #include #include #include using namespace std; __int64 dp[30][4]; void init() { memset(dp,0,sizeof(dp)); dp[0][0]=1; for(int i=1; i<=20; i++) { dp[i][0]=dp原创 2013-04-08 22:20:37 · 3897 阅读 · 1 评论 -
hdu3127
题意:给你一块X*Y的布,然后选做n个手帕,给你这n个手帕的长和块,做出每个手帕会获得相应的利润,问该怎样分配这块布,才能获得最大的利润。 http://www.cnblogs.com/feature/articles/1856555.html 图画的不错,很容易理解。#include #include #include #include using namespace std; int dp原创 2013-04-07 17:20:33 · 896 阅读 · 0 评论 -
整数划分:
一个数可以被分解成几个数和的形式: 利用动态规划求解:根据不同要求做相应的改变,注意高精度的处理 for(int i=0;i for(int j=i;j dp[j]+=dp[j-i];hdu1028: 求解一个数可以被分解多个数和的形式,这种情况有几种? #include #include #include #include using namespace st原创 2013-04-06 14:14:33 · 523 阅读 · 0 评论 -
http://poj.org/problem?id=2063
//题意:John购买债券,购买不同价位的债券,你所获得的收益不同,(数据特点:你所存的钱是1000的倍数) //或得的最大的收益为多少? //完全背包,背包的容量是发生变化的。 #include #include #include using namespace std; int dp[100000]; int val[100]; int weight[100]; int max(int a,i原创 2013-04-03 20:51:43 · 653 阅读 · 0 评论 -
http://poj.org/problem?id=1384
一个存钱罐,有自己的重量E和它所能承受的重量F,现在有N种不同的硬币,每个硬币有不同的价值V和重量W,问这个存钱罐最小能放多少钱 完全背包,正常情况下,我们查找最大值,现在我们查找最小值即可:#include #include #define max 11000 using namespace std; int val[555],wei[555]; int dp[max]; int T,t; i原创 2013-04-04 10:45:37 · 766 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2159
/* 二维背包: 忍耐度 与 怪的数量 dp[i][j]=max(dp[i][j],dp[i-v][j-k]+val[v]); i代表忍耐度,j代表杀怪的数目,dp[i][j]代表获得的经验值。 */ #include #include #include #include using namespace std; int dp[111][111]; int val[111],wei[111];原创 2013-04-04 16:12:47 · 538 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2546
//思路:将饭卡里的钱数作为包的容量,在刷卡的时候会出现两种情况:①当全部刷完之后,卡里的剩余量>=5,直接刷。 //②当全部刷完之后,卡里的剩余量=5,用来买最贵的菜。小贪心 #include #include #include using namespace std; int rank[11000]; int dp[11000]; int ans[11000]; int max1(int a,原创 2013-03-30 11:19:44 · 536 阅读 · 0 评论 -
http://poj.org/problem?id=1014 多重背包转化成01背包
//题意:给你6种不同面值的弹球,让你把它们分成两份,有一个条件是”它们不能被切开,均分的前提是,保证每个弹球的完整性“; //思路:数据量很大,用二进制拆分来提高效率,将一个整数M拆分成1,2,4,8,2^n,M-2^n+1,这种形式,在后在合并,转化成01背包求解, #include #include #include using namespace std; int num[420010];原创 2013-03-30 19:12:38 · 642 阅读 · 0 评论 -
hdu2955 解决问题的思路不错 逆向求解
//题意:Roy想偷银行里的钱,但是在偷每个银行里的钱时,都冒着一定被抓的风险,为了能让被抓的风险降低为(小于等于p) //求所偷的最大的值。 //思路:刚开始以为将被抓的概率X100000,然后把p当做背包的容量,利用01背包求解,但是最后还是错了,因此小数点后面的位数太多了。 //看了下别人的思路,感觉挺好。转化为最大的存活概率。 //即:将银行所有的资产转化为背包的容量,求存活率最高,注意当原创 2013-03-29 20:25:46 · 641 阅读 · 0 评论 -
http://poj.org/problem?id=3628 背包问题还有一个地方没想明白 直接DFS()
题意:Farmer John最近为cow library买了个书架,由于该书架很快被放满了,所以空余的部分都在上部。 现在为了能够到达顶部,需要把一些cow叠放在一起,然后当堆叠在一起的时候可以达到最大高度时,找出满足条件时差值最小滴。 #include #include #include using namespace std; int num[40]; int ans; int n,b;原创 2013-03-29 11:51:38 · 772 阅读 · 0 评论 -
http://poj.org/problem?id=3624
//题意:Bessie他想在charm bracelet上添加charms,每个charms有一个重量和一个法力值,并且每一种charm有且仅有一个。 //由于Bessie所能承受的重量有限,所以不能无限的添加charms,在规定的重量范围内,如何将获取最大的法力值。 //思路:这是一道01背包的题目,包的容量为M(即:最大所能承受的重量)。 //状态转移方程为:dp[j]=max(dp[j],d原创 2013-03-29 10:58:32 · 614 阅读 · 0 评论 -
http://poj.org/problem?id=3211
//01背包问题: 有一对朋友洗衣服,一次只能洗完颜色相同的衣服之后,再洗其它颜色的衣服。 //求解洗完全部的衣服之后花费的最小时间 //思路:洗每种颜色相同的衣服所花费的时间不一样,如果一个人洗完了,则另一个人处于等待状态。所以我们应该让他们的时间尽可能的相同 //所以我们应该找出所有相同衣服所花费的总时间sumTime,然后在sumTime/2这个时间段中尽可能的多洗衣服。状态转移方程原创 2013-03-29 10:30:40 · 603 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2602
题意:一介屌丝喜欢收集各种骷髅头,每个骷髅头都一个体积和价值,这个屌丝有一个袋子体积为V,唉,穷屌丝比较贪,他想收集各种骷髅头放到他的袋子中,要求获得的利润最大。并让你#include int weight[1010]; int value[1010]; int dp[1010]; int max(int a,int b) { return a>b?a:b; } int main() {原创 2013-03-29 18:20:19 · 857 阅读 · 0 评论 -
http://poj.org/problem?id=1252
题意:由给定的6个数组成【1,100】中的每个数,(第一个数字是1)找出每个数的最少组合,让你求平均组合数和最大组合数 可以有负值:完全背包//C++ #include #include #include #define max 10010 using namespace std; int dp[max]; int num[13]; int T; int min(int a,int b) {原创 2013-04-11 16:03:59 · 699 阅读 · 0 评论