[LUOGU] P1049 装箱问题】的更多相关文章

题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: 一个整数,表示箱子容量 一个整数,表示有n个物品 接下来n行,分别表示这n 个物品的各自体积 输出格式: 一个整数,表示箱子剩余空间. 输入输出样例 输入样例#1: 复制 24 6 8 3 12 7 9 7 输出样例#1: 复制 0 说明 NOIp2001普及组 第4题…
\[传送门在这呢!!\] 题目描述 有一个箱子容量为\(V\)(正整数,\(0 \le V \le 20000\)),同时有\(n\)个物品(\(0<n \le 30\),每个物品有一个体积(正整数). 要求\(n\)个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: \(1\)个整数,表示箱子容量 \(1\)个整数,表示有\(n\)个物品 接下来\(n\)行,分别表示这\(n\)个物品的各自体积 输出格式: \(1\)个整数,表示箱子剩余空间. 输入输出样例 输入…
一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了. 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包,注意价值和重量是一个东西,且最后输出剩余的体积. 随随便便二维就AC了,懒得写一维. AC代码 #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> #include&l…
装箱问题 题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入格式: 一个整数,表示箱子容量 一个整数,表示有n个物品 接下来n行,分别表示这n 个物品的各自体积 输出格式: 一个整数,表示箱子剩余空间. 模拟背包问题,只要可以从后面达到的,都不为0,只要找到最大的不为0的重量就解决了. 还需理解,不够透彻. #include<iost…
装箱问题 题目描述 有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0<n≤30),每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入格式 1个整数,表示箱子容量 1个整数,表示有n个物品 接下来n行,分别表示这n个物品的各自体积 输出格式 1个整数,表示箱子剩余空间. 输入输出样例 输入 #1 24 6 8 3 12 7 9 7 输出 #1 0 题目解析 这种题的数据很水,一个快排加一个循环直接AC AC完整程序 #includ…
题目描述 有一个箱子容量为VV(正整数,0≤V≤20000),同时有nn个物品(0<n≤30,每个物品有一个体积(正整数). 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: 11个整数,表示箱子容量 11个整数,表示有nn个物品 接下来nn行,分别表示这nn个物品的各自体积 输出格式: 11个整数,表示箱子剩余空间. 输入输出样例 输入样例#1: 复制 24 6 8 3 12 7 9 7 输出样例#1: 复制 0 说明 NOIp2001普及组 第4题 由…
题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入输出格式 输入格式: 一个整数,表示箱子容量 一个整数,表示有n个物品 接下来n行,分别表示这n 个物品的各自体积 输出格式: 一个整数,表示箱子剩余空间. 输入输出样例 输入样例#1: 24 6 8 3 12 7 9 7 输出样例#1: 0 说明 NOIp2001普及组 第4题 这道题看似…
一句话刚刚的题会了,这题能不会么. #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>m; cin>>n; ]={},money[]; f[]=; ;i<=n;i++) cin>>money[i]; ;i<=n;i++) for (int j=m;j>=money[i];j--) f[j]+=f[j-money[i]]; ;i--) ) { cout…
这是一道DP(背包)水题. 题目问剩余空间最小,那么意思为装得最多.拿到题后便习惯了用贪心去思考,发现局部并不是全局最优,所以考虑dp.但是发现01背包的价值呢?(这个错误的想法就显示了我对dp理解得不透彻).而其实这些题的本源都在于写转移方程,于是便想了出来dp[j]=max(dp[j],dp[j-weight[i]]+weight[i]),用dp[j]来表示当背包容量为j时最大可以装多少.另外,要注意倒序,因为是类01. 1.不要光想套模板,要自己写出状态转移方程 2.贪心是一种方法,并不是…
//01背包 价值等于体积 求所剩最小体积 #include<bits/stdc++.h> using namespace std; ; ; int c,n,v[maxn],f[maxv]; int main() { scanf("%d%d",&c,&n); ;i<=n;++i) scanf("%d",&v[i]); ;i<=n;++i) for(int j=c;j>=v[i];--j) f[j]=max(f[j…