DP-背包
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
hdu4501三维背包
思路:题意就是小明去买东西,每个物品呢可以用钱购买,也可以用积分换,总共小明也有免费获得物品的次数k次(也就是可以免费获得k个物品);所以最后的决策就是是用钱买,还是用积分换,还是用免费领取的次数;这里的01背包和我以前写的方式有点不同就是,,,这个继承上一个状态的写法;以前是倒着写的,由于这里for层数较多,,,所以就换了个写法;点击打开链接/****************原创 2015-09-09 16:20:20 · 401 阅读 · 0 评论 -
HDU11完全背包
思路:求最小初始化为inf,求最大初始化成-inf;dp[0] = 0;/*****************************************Author :Crazy_AC(JamesQi)Time :2015File Name :*****************************************/// #pragma co原创 2015-09-14 16:22:53 · 543 阅读 · 0 评论 -
hdu4501(三维背包)
思路:dp[i][j][k],第一维表示用钱买,第二维表示用积分换,第三维表示免费的。对于每个商品而言,要么用钱,要么用积分,要么用免费的次数。所以呢,dp[i][j][k] = max(dp[i - a[s]][j][k],dp[i][j - b[s]][k],dp[i][j][k - 1]) + v[s];这个是对于地s个物品而言的。/*************************原创 2015-10-06 20:36:15 · 578 阅读 · 0 评论 -
hdu2126(三维背包)
思路:显然的思路是前i个物品选j个花费k元的次数。dp[i][j][k] = dp[i - 1][j][k] + dp[i - 1][j - 1][k - v[i]];由上面的转移方程可以看出来,可以去掉一维,就是dp[j][k] = dp[j - 1][k - v[i]] + dp[j][k];/*****************************************Au原创 2015-10-06 20:43:26 · 464 阅读 · 0 评论 -
CSU1613 Elephants
思路:多重背包;#include #include int t,n,m;int dp[1010],A[21][51],C[21][51],num[21];int max(int x,int y){ return x > y?x:y;}int main(){ // freopen("in.txt","r",stdin); scanf("%d",&t); while(t--原创 2015-10-10 18:16:25 · 408 阅读 · 0 评论 -
uva10310(SuperSale)
思路:题目的意思就是有n种物品,m个人,每种物品有对应的价值和重量,数量无限,,但是每种物品每个人只能拿一次,然后每个人有一个最高承重值,问最后这n个人最多可以带走的价值和事多少;显然对于个人而言,别人拿多少对自己是没有影响的,所以就只讨论每个人的情况,最后加起来就好了。对于每个人来说就是一个01背包问题,与处理下就好了。// #pragma comment(linker, "/STA原创 2015-10-27 00:00:08 · 475 阅读 · 0 评论 -
hdu5410 CRB and Birthday(背包)
这题就是背包,二进制优化下就好了。 不懂二进制优化的就看看背包九讲/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :*****************************************/// #pragma comment原创 2016-07-18 22:45:42 · 312 阅读 · 0 评论