
背包问题DP
小王子y
互关啊!!
展开
-
NOIP2012普及组 摆花(多重背包)
小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 mm 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。为了在门口展出更多种花,规定第 i 种花不能超过 ai 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数 n 和 m,中间用一个空格隔开。 第二行有 nn 个整数,每两个整数之间用一个空格隔开,依次表示 a1,a2,…,an。输出格式输出只有一行原创 2021-03-12 01:07:19 · 207 阅读 · 0 评论 -
搭配购买(并查集,01背包问题)
Joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有 n 朵云,云朵被编号为 1,2,…,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。但是Joe的钱有限,所以他希望买的价值越多越好。输入格式第 1 行包含三个整数 n,m,w,表示有n 朵云,m 个搭配,Joe有 w 的钱。第 2∼n+1行,每行两个整数 ci,di 表示 i 朵云的价钱和价值。第 n+2∼n+1+m 行,每行两个整数 ui,vi,表示买 ui 就必须买 v原创 2021-02-28 20:08:49 · 169 阅读 · 0 评论 -
得分通胀(完全背包)
学生们在 USACO的竞赛中得分越多,我们就越感到高兴。所以我们要尽量将竞赛设计的能够让更多人得到更高的分。为了达到这一目的,请你帮助我们选择一些题目作为比赛用题。共有 N 种类别的题可以让我们进行选择,同一类别的题做对所花的时间以及得到的分数都是相同的。每种类型的题目出现在一次竞赛中的数量不限,竞赛的时长为 M,即所选题目的总耗时不得超过 M,但可以小于 M。请问,我们如何安排各种类型的题目在竞赛中出现的数量,能够使得用户的得分最多。竞赛中不一定要出现所有类型的题目。输出用户可能的最高得分。原创 2021-02-27 20:29:38 · 133 阅读 · 0 评论 -
有依赖的背包问题
有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品个数和背包容量。接下来有 N原创 2021-02-27 16:35:04 · 251 阅读 · 0 评论 -
拿糖果(背包问题)
问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉。 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数。这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖。然后小B就可以接着拿糖。 现在小B希望知道最多可以拿多少糖。输入格式 一个整数N输出格式 最多可以拿多少糖样例输入15样例输出6数据规模和约定 N <= 100000分析:动态规划问题~~首先呢~创建一个满足不大于根号下最大值MAXN的素数表,然后对素数表里面的数逐原创 2021-02-22 00:02:07 · 686 阅读 · 0 评论 -
糖果( 01背包问题)
由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的 N 件产品中任意选择若干件带回家享用。糖果公司的 N 件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是 K 的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢?注意:Dzx只能将糖果公司的产品整件带走。输入格式第一行包含两个整数 N 和 K。以原创 2021-02-21 01:42:27 · 638 阅读 · 1 评论 -
蓝桥杯 包子凑数(完全背包)
小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼,其中第 i 种蒸笼恰好能放 Ai 个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有 X 个包子。比如一共有 3 种蒸笼,分别能放 3、4 和 5 个包子。当顾客想买 11 个包子时,大叔就会选 2 笼 3 个的再加 1 笼 5 个的(也可能选出 1 笼 3 个的再加 2 笼 4 个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。原创 2021-02-09 21:30:17 · 441 阅读 · 0 评论 -
USACO子集的和(背包问题)
对于很多由 1∼N 构成的连续整数集合,我们都可以将其划分为两个子集,并使得两个子集的和相等。例如,当 N=3 时,我们可以将集合 {1,2,3} 划分为子集 {1,2} 和 {3},这也是唯一的一种满足条件的划分方式。当 N=7 时,共有四种满足条件的划分方式,如下所示{1,6,7}{1,6,7} 和 {2,3,4,5}{2,3,4,5}{2,5,7}{2,5,7} 和 {1,3,4,6}{1,3,4,6}{3,4,7}{3,4,7} 和 {1,2,5,6}{1,2,5,6}{1,2,4,7原创 2021-02-04 22:24:48 · 256 阅读 · 0 评论 -
二维费用的背包问题
有 N 件物品和一个容量是 V 的背包,背包能承受的最大重量是 M。每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V, M,用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。接下来有 N 行,每行三个整数 vi,mi,wi,用空格隔开,分别表示第 i 件物品的体积、重量和价值。输出格式输出一个整数,表示最大价值。数据范原创 2021-01-29 21:00:51 · 266 阅读 · 0 评论 -
宠物小精灵之收服(二维01背包)
宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事。一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵。小智也想收服其中的一些小精灵。然而,野生的小精灵并不那么容易被收服。对于每一个野生小精灵而言,小智可能需要使用很多个精灵球才能收服它,而在收服过程中,野生小精灵也会对皮卡丘造成一定的伤害(从而减少皮卡丘的体力)。当皮卡丘的体力小于等于0时,小智就必须结束狩猎(因为他需要给皮卡丘疗伤),而使得皮卡丘体力小于等于0的野生小精灵也不会被小智收服。当小智的精灵球用完时,狩猎也宣告原创 2021-01-29 20:39:02 · 104 阅读 · 0 评论 -
数字组合(01背包问题)
给定N个正整数A1,A2,…,AN,从中选出若干个数,使它们的和为M,求有多少种选择方案。输入格式第一行包含两个整数N和M。第二行包含N个整数,表示A1,A2,…,AN。输出格式包含一个整数,表示可选方案数。数据范围1≤N≤100,1≤M≤10000,1≤Ai≤1000输入样例:4 41 1 2 2输出样例:3#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N原创 2021-01-26 20:48:34 · 1434 阅读 · 0 评论 -
开心的金明(01背包问题)
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j件物品的价格为v[原创 2021-01-26 19:44:13 · 166 阅读 · 0 评论 -
USACO邮票(完全背包)
给定 N 种不同面值的邮票,每种面值的邮票都有足够多张。一个信封上最多可以贴 K 张邮票。请你找出使得 1 到 M 之间所有的邮资都能被凑出的最大的 M 是多少。例如,假设现在有 1 和 3 两种面值的邮票,一个信封上最多可以贴 5 张邮票,那么 1 到 13 之间的所有邮资都可以被凑出:1 = 12 = 1 + 13 = 34 = 3 + 15 = 3 + 1 + 16 = 3 + 37 = 3 + 3 + 18 = 3 + 3 + 1 + 19 = 3 + 3 + 310 =原创 2021-01-25 01:23:00 · 364 阅读 · 0 评论 -
分组背包问题
有 N 组物品和一个容量是 V 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品组数和背包容量。接下来有 N 组数据:每组数据第一行有一个整数 Si,表示第 i 个物品组的物品数量;每组数据接下来有 Si 行,每行有两个整数 vij,wij,用空格隔开,分别表示第 i原创 2021-01-23 22:18:16 · 162 阅读 · 0 评论 -
多重背包问题 II(二进制优化)
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N≤10000<V≤20000<vi,wi,si≤200原创 2021-01-23 21:43:41 · 262 阅读 · 0 评论 -
多重背包问题 I(暴力列举)
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1000<vi,wi,si≤100输入样例4 51原创 2021-01-23 21:14:14 · 132 阅读 · 0 评论 -
完全背包问题
有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 ii 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 2原创 2021-01-23 20:52:12 · 165 阅读 · 0 评论 -
USACO货币系统(完全背包解析)
给定 V 种货币(单位:元),每种货币使用的次数不限。不同种类的货币,面值可能是相同的。现在,要你用这 V 种货币凑出 N 元钱,请问共有多少种不同的凑法。输入格式第一行包含两个整数 V 和 N。接下来的若干行,将一共输出 V 个整数,每个整数表示一种货币的面值。输出格式输出一个整数,表示所求总方案数。数据范围1≤V≤25,1≤N≤10000答案保证在long long范围内。输入样例:3 101 2 5输出样例:10#include <iostream>原创 2021-01-23 19:53:41 · 307 阅读 · 0 评论 -
背包问题求具体方案
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 字典序最小的方案。这里的字典序是指:所选物品的编号所构成的序列。物品的编号范围是 1…N。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一行,包含若干个用空格隔开的整数,表示最优解原创 2021-01-22 12:10:58 · 469 阅读 · 0 评论 -
背包问题求方案数
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7 的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示 方案数 模 109+7 的结果。数据范围0&原创 2021-01-22 10:48:57 · 444 阅读 · 0 评论 -
装箱问题(01背包问题)
有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数)。要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式第一行是一个整数 V,表示箱子容量。第二行是一个整数 n,表示物品数。接下来 n 行,每行一个正整数(不超过10000),分别表示这 n 个物品的各自体积。输出格式一个整数,表示箱子剩余空间。数据范围0<V≤20000,0<n≤30输入样例:2468312797输出样例:0#include<bits/s原创 2021-01-22 00:51:54 · 525 阅读 · 0 评论 -
采药(01背包问题)
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入格式输入文件的第一行有两个整数T和M,用一个空格隔开,T代表总共能够用来采药的时间,M原创 2021-01-22 00:37:59 · 221 阅读 · 0 评论 -
PAT甲级真题1068 找更多硬币(背包DP)
伊娃喜欢从整个宇宙中收集硬币。有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。但是,有一个特殊的付款要求:每张帐单,她都必须准确的支付所消费金额。给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她能否找到一些硬币来支付。输入格式第一行包含两个整数 N 和 M,分别表示硬币数量以及需要支付的金额。第二行包含 N 个整数,表示每个硬币的面额。输出格式共一行,按照面额升序的顺序,输出用来支付的所有硬币的面额。如果支付方式不唯一,则输出最小的支付面额序列。如果无解,则输出原创 2021-01-06 00:12:08 · 257 阅读 · 0 评论