![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP-背包
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
hdu4501三维背包
思路:题意就是小明去买东西,每个物品呢可以用钱购买,也可以用积分换,总共小明也有免费获得物品的次数k次(也就是可以免费获得k个物品); 所以最后的决策就是是用钱买,还是用积分换,还是用免费领取的次数; 这里的01背包和我以前写的方式有点不同就是,,,这个继承上一个状态的写法; 以前是倒着写的,由于这里for层数较多,,,所以就换了个写法; 点击打开链接 /****************原创 2015-09-09 16:20:20 · 382 阅读 · 0 评论 -
HDU11完全背包
思路:求最小初始化为inf,求最大初始化成-inf;dp[0] = 0; /***************************************** Author :Crazy_AC(JamesQi) Time :2015 File Name : *****************************************/ // #pragma co原创 2015-09-14 16:22:53 · 522 阅读 · 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 · 559 阅读 · 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 · 447 阅读 · 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 · 391 阅读 · 0 评论 -
uva10310(SuperSale)
思路:题目的意思就是有n种物品,m个人,每种物品有对应的价值和重量,数量无限,,但是每种物品每个人只能拿一次,然后每个人有一个最高承重值,问最后这n个人最多可以带走的价值和事多少; 显然对于个人而言,别人拿多少对自己是没有影响的,所以就只讨论每个人的情况,最后加起来就好了。 对于每个人来说就是一个01背包问题,与处理下就好了。 // #pragma comment(linker, "/STA原创 2015-10-27 00:00:08 · 452 阅读 · 0 评论 -
hdu5410 CRB and Birthday(背包)
这题就是背包,二进制优化下就好了。 不懂二进制优化的就看看背包九讲/***************************************** Author :Crazy_AC(JamesQi) Time :2016 File Name : *****************************************/ // #pragma comment原创 2016-07-18 22:45:42 · 289 阅读 · 0 评论