![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
各种背包
文章平均质量分 79
WA是一笔财富
这个作者很懒,什么都没留下…
展开
-
UVA 674 - Coin Change 完全背包求状态数
传送门:UVA674题意:用1、5、10、25、50 这五个数去凑给定的数n,问有多少种方案。个认为这题真的挺好的,如果你理解透彻了,20行就能写出来,但要是抓不到本质就无从下手。网上关于这题大致有两种解法,一是递推,一是记忆化搜索,其实二者在思想上是相互转化的,也就是DP的根本。通过做这个题更加深刻理解了这种联系。递推分析:完全背包问题。定义状态dp[i,j],代表用前i原创 2017-01-16 00:28:48 · 392 阅读 · 0 评论 -
POJ - 2392 Space Elevator 多重背包
传送门:POJ2392题意:有k种砖头,每种高为hi,可以摞到的最大高度为ai,数量为ci,问用这些砖头最多摞多高。思路:典型多重背包,算了算感觉不加优化也能过,写一发还真过了。。暴力:#include#include#define ll long long#define pb push_back#define fi first#define se second#def原创 2017-07-22 21:55:55 · 274 阅读 · 0 评论 -
POJ - 2229 Sumsets 计数dp
传送门:POJ2229题意:用1,2,4,8这样的2的幂次数去组成n,问有多少种不同的组成方案。思路:打眼一看这不是完全背包裸题么,写完还真a了,不过总感觉事情没那么简单,一看discuss果然不出我所料。。解法一:完全背包。解法二:递推,分析如下:1. 当 n 为奇数时, f[n] = f[n-1], 因为只需在所有的序列前添加一个 1 即可, 所有的序列同时延迟 1原创 2017-07-21 20:17:28 · 200 阅读 · 0 评论 -
POJ - 3181 Dollar Dayz 完全背包 + 整数拆分(高精度)
传送门:POJ3181题意:有1到k共k种数,每种数有无限个,问能组成n的不同方案有多少种。思路:开始没想到要高精度,用了大白P63页的方法去做,wa一发,搜题解才发现这不就是个裸的完全背包么。。容量是n,有价值1-k的k种物品。因为题目没要求取模,所以要用到高精度,模拟大数加法可以做,不过dalao们都是将答案分成两部分,一部分计算高位,一部分计算低位,这样既能加快运算速度,写起来还简便原创 2017-07-21 13:51:35 · 916 阅读 · 0 评论 -
POJ - 1742 Coins 多重背包+(二进制优化||单调队列优化)
传送门:POJ 1742题意:有n中面额的钱,每种有ci个,问1--m里有多少个数能用这些钱组成。思路:一看就知道是多重背包,不过是重量等于价值的特殊形态而已,并且数据量明显不能直接暴力,这里有两种优化方法,一是二进制优化,不过这里dp要换成bool数组表示能否组成的状态,要按普通背包写的话可能会t。二是单调队列优化,这个题普通的单调队列优化也是过不了的,在单调队列的基础上还要特判出0原创 2017-07-21 13:29:42 · 482 阅读 · 0 评论 -
The Knapsack problem Gym - 101064L
D - The Knapsack problem Gym - 101064L 题意:给定背包可容纳总重量S和n种物品,每种物品有自己的重量w和价值c,每种物品能使用多次,问背包能装物品的最大价值是多少。这题是队内训练的时候做的,当时一看,这不是裸的完全背包么,大水题,快切,然而写完了才注意到数据范围。。一下就傻X了。后来队友说可以把包分成两部分,较大的部分贪心,剩下的再原创 2017-03-09 23:30:48 · 1143 阅读 · 0 评论 -
CodeForces - 365D Free Market 背包求状态数+贪心
传送门:CodeForces - 365D题意:有n种物品,每种物品有它的价值,john要和别人做交易,每次交易双方物品集合的总价值之差不能超过d,每天john只能做一笔交易,一开始john什么都没有,另一个人有所有的n种物品,问john最多能获得多大价值的物品,最少用多少天能获得最大价值的物品。思路:我刚开始做这个题就是xjb模拟加贪心,最大价值还好说,天数一直搞不定,看了题解才发现要用原创 2017-03-03 11:23:02 · 400 阅读 · 1 评论 -
POJ1267 Cash machine 多重背包
传送门:POJ1276题意:给定一种新货币的多种面额和每种面额的数量和一个数额上限,问在不超过数额上限的前提下用给定的货币最多能凑出多大数额来。思路:典型的多重背包,可以说是模板题,只不过本题中w[i]==v[i]而已。可以用二进制优化,也可以单调队列优化。不明白多重背包是啥的请自行搜索《背包九讲》。二进制优化代码:#include#include#include#i原创 2017-01-25 19:02:57 · 242 阅读 · 0 评论 -
蓝桥杯 算法提高 金明的预算方案 有依赖的背包问题
算法提高 金明的预算方案 时间限制:1.0s 内存限制:256.0MB 问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属原创 2017-02-18 13:19:28 · 549 阅读 · 0 评论 -
POJ - 2184 Cow Exhibition 01背包变形
传送门:POJ2184题意:给定n个点对(a,b),从中选出任意个来,使sum(a)+sum(b)尽量大并且sum(a)>=0,sum(b)>=0.思路:开始我想的是dp[i][j]表示前i个点对sum(a)= j的时候的最大sum(b),算着复杂度也差不多,然而mle,看题解才恍然大悟,这不就是01背包么,a就是重量,b就是价值,虽然所求目标和01背包不太一样,但是我们将sum(a)当下原创 2017-07-22 22:10:57 · 224 阅读 · 0 评论