
背包
小狐狸jun
菜鸟飞呀飞~
展开
-
01 背包 poj 3624
题目链接:http://poj.org/problem?id=3624题意:小偷光顾珠宝店,背了个包的容积为M,珠宝店有N种珠宝,每种珠宝的体积为W,价值为D,小偷用这个背包可以偷回去珠宝的最大价值是多少。代码:[cpp] view plaincopyprint?#include int main() { int i,j; int n,m; int w[34原创 2013-04-01 21:02:17 · 558 阅读 · 0 评论 -
poj 1948二维01背包
题意:给出不多于40个小棍的长度,求出用所有小棍组成的三角形的最大面积。 思路:三角形3边求面积,海伦公式:p=(a+b+c)/2;S=p*(p-a)*(p-b)*(p-c);因为最大周长为1600 则三角形的边长小于周长一半800;则可以用背包思想dp[i][j]代表能组成的两条边i和j。dp为true代表小棍能组成这两条边,第三条边也能求出,最后遍历一次dp数组求最大面积。原创 2013-08-14 12:49:43 · 951 阅读 · 0 评论 -
poj 1742 多重背包
题意:给出n种面值的硬币, 和这些硬币每一种的数量, 要求求出能组成的钱数(小于等于m) 思路:一开始直接用多重背包套上去超时了,然后就没辙了,然后参考网上的,说只需要判断是否能取到就行了,并不需要记录其价格,直接用bool判断是否能取到。就不会TLE了。 代码:#include#include#includeusing namespace std;int原创 2013-08-13 21:22:27 · 513 阅读 · 0 评论 -
poj 1014多重背包
题意:给出价值为1,2,3,4,5,6的6种物品数量,问是否能将物品分成两份,使两份的总价值相等。 思路:求出总价值除二,做多重背包,需要二进制优化。 代码:#include#include#includeusing namespace std;int n[7];int v,sum;bool flag;int dp[100000];/*完原创 2013-08-13 10:07:20 · 639 阅读 · 0 评论 -
poj 1384完全背包
题意:给出猪罐子的空质量和满质量,和n个硬币的价值和质量,求猪罐子刚好塞满的的最小价值。 思路:选择硬币,完全背包问题,塞满==初始化为无穷,求最小价值,min。 代码:#include#include#includeusing namespace std;#define inf 10000000int n,sum,empty,full,T;int v[原创 2013-08-12 19:16:20 · 1840 阅读 · 0 评论 -
poj 2063完全背包
题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润。问如何选择能获得最大利润。 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序不同,因为完全背包没有次数的限制,因而其当前状态会受到之前选择的状态影响。这题由于每个股票的价格都是1000为单位的,所以将价格除掉1000,优化内存。 代码:#include原创 2013-08-12 18:54:40 · 690 阅读 · 0 评论 -
hdu2546 01背包 重学背包
题意:给出菜的价钱和自己的余额。使自己余额最少,注意余额大于5的情况可以买任意的菜。 思路:小于5的余额不能买菜,直接输出,大于五的余额,留下5元买最贵的菜,剩下的余额进行01背包,将剩下的余额减去01背包消耗金额最大。就得出答案 代码:#include#includeusing namespace std;int ZeroOnePack( int price[],原创 2013-08-11 11:02:24 · 521 阅读 · 0 评论 -
poj 1276 完全背包
poj 1276Cash MachineTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 18242Accepted: 6364DescriptionA Bank plans to install a machine for cash withdrawal. The machine is able to deliv原创 2013-04-01 21:03:31 · 715 阅读 · 0 评论 -
完全背包 poj 1384
#include#include#include#includeusing namespace std;const int maxn=500;const int maxdp=10010;int p[maxn],w[maxn];int dp[maxdp];int main(){ //freopen("in.txt","r",stdin); int t;原创 2013-04-01 21:02:46 · 545 阅读 · 0 评论 -
poj 1882完全背包变形
题意:给出一个上限硬币数量s,给出n套硬币价值,求一套硬币能用不大于s数量的硬币组成从1开始连续的区间价值,其中,如果其最大值相同,输出数量小的和价值小的。 思路:很明显的完全背包,纠结后面最大值相同时的情况没判断,WA好多次。 代码:#include#include#include#include#define inf 1000000using names原创 2013-08-14 19:51:11 · 721 阅读 · 0 评论