P1049装箱问题
这是一道DP(背包)水题。
题目问剩余空间最小,那么意思为装得最多。拿到题后便习惯了用贪心去思考,发现局部并不是全局最优,所以考虑dp。但是发现01背包的价值呢?(这个错误的想法就显示了我对dp理解得不透彻)。而其实这些题的本源都在于写转移方程,于是便想了出来dp[j]=max(dp[j],dp[j-weight[i]]+weight[i]),用dp[j]来表示当背包容量为j时最大可以装多少。另外,要注意倒序,因为是类01。
1.不要光想套模板,要自己写出状态转移方程
2.贪心是一种方法,并不是每一个题都要用到
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 100001
using namespace std;
int dp[N];
int weight[N];
int n;
int T;
int main(){//让T最小 :装的多
cin>>T;
cin>>n;
for(int i=;i<=n;i++){
cin>>weight[i];
}
for(int i=;i<=n;i++){
for(int j=T;j>=weight[i];j--){
dp[j]=max(dp[j],dp[j-weight[i]]+weight[i]);
}
}
cout<<T-dp[T];
return ;
}
P1049装箱问题的更多相关文章
- 洛谷 P1049 装箱问题
\[传送门在这呢!!\] 题目描述 有一个箱子容量为\(V\)(正整数,\(0 \le V \le 20000\)),同时有\(n\)个物品(\(0<n \le 30\),每个物品有一个体积(正 ...
- P1049 装箱问题
装箱问题 题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使 ...
- 洛谷 P1049 装箱问题(01背包)
一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了. 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包 ...
- [贪心]P1049 装箱问题
装箱问题 题目描述 有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0<n≤30),每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. ...
- (01背包 dp)P1049 装箱问题 洛谷
题目描述 有一个箱子容量为VV(正整数,0≤V≤20000),同时有nn个物品(0<n≤30,每个物品有一个体积(正整数). 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入 ...
- 洛谷 P1049 装箱问题【正难则反/01背包】
题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余 ...
- 洛谷P1049装箱问题
一句话刚刚的题会了,这题能不会么. #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>> ...
- [LUOGU] P1049 装箱问题
题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余 ...
- 洛谷P1049 装箱问题
//01背包 价值等于体积 求所剩最小体积 #include<bits/stdc++.h> using namespace std; ; ; int c,n,v[maxn],f[maxv] ...
随机推荐
- org.hibernate.NonUniqueObjectException 原因及解决办法
问题 使用hibernate更新对象时,出现如下错误: org.hibernate.NonUniqueObjectException: a different object with the same ...
- Fortran代码生成so库
例: ifort -c -fpic test.f90ifort -shared -o test.so test.o
- 参数上使用自定义注解在aop中无法获取到该参数
https://ask.csdn.net/questions/769477 /** * 环绕增强,验证权限 * @param joinPoint 目标对象 * @param authCheck 自定义 ...
- cpu、gpu 安装框架pytorch,cntk,theano及测试
一,cpu 下安装 tensorflow conda env list source activate tensorflow 直接安装相应版本 python import tensorflow as ...
- Django之nginx+wsgi后台部署(最新版)
0-部署准备 1.要使用安全组打开腾讯云的80端口 腾讯云的80端口不能访问www.jianshu.com 以实际项目部署为例 项目名称api_learn: Python版本:python 3.6. ...
- UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
题意 : 机器人要从一个m * n 网格的左上角(1,1) 走到右下角(m, n).网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示).机器人每次可以往4个方向走一格,但不能连续地穿越k( ...
- mac 的 quickTime Player 设置播放速度
按住 option 点击 下一个视频的图标每次调整幅度为0.1,大于 1.9 声音会消失. 按住 option+J 调慢播放速度 option+L 调快播放速度 每次调整幅度为0.1
- Jedis下的ShardedJedis
jedis客户端操作redis主要三种模式:单台模式.分片模式(ShardedJedis).集群模式(BinaryJedisCluster) ShardedJedis是通过一致性哈希来实现分布式缓存的 ...
- windows7 中 wacom数位板如何关闭点击水波 和长按右键这两个特效
就是点住笔尖不动,就会弹出右键,这个功能是微软操作系统具有的一项功能,,如果您感觉不便,可以按以下方法将其去掉: 1.打开"控制面板--笔和触摸--笔选项--按下并保持--设置": ...
- C#实现读取指定盘符硬盘序列号的方法
文章主要介绍了C#实现读取指定盘符硬盘序列号的方法,涉及C#针对硬件属性的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#实现读取指定盘符硬盘序列号的方法.分享给大家供 ...