这是一道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装箱问题的更多相关文章

  1. 洛谷 P1049 装箱问题

    \[传送门在这呢!!\] 题目描述 有一个箱子容量为\(V\)(正整数,\(0 \le V \le 20000\)),同时有\(n\)个物品(\(0<n \le 30\),每个物品有一个体积(正 ...

  2. P1049 装箱问题

    装箱问题 题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使 ...

  3. 洛谷 P1049 装箱问题(01背包)

    一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了. 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包 ...

  4. [贪心]P1049 装箱问题

    装箱问题 题目描述 有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0<n≤30),每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. ...

  5. (01背包 dp)P1049 装箱问题 洛谷

    题目描述 有一个箱子容量为VV(正整数,0≤V≤20000),同时有nn个物品(0<n≤30,每个物品有一个体积(正整数). 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入 ...

  6. 洛谷 P1049 装箱问题【正难则反/01背包】

    题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余 ...

  7. 洛谷P1049装箱问题

    一句话刚刚的题会了,这题能不会么. #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>> ...

  8. [LUOGU] P1049 装箱问题

    题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩余 ...

  9. 洛谷P1049 装箱问题

    //01背包 价值等于体积 求所剩最小体积 #include<bits/stdc++.h> using namespace std; ; ; int c,n,v[maxn],f[maxv] ...

随机推荐

  1. time时间库使用示例

    time时间库主要有以下几个方法 1. 生成struct_time ,然后就可以很方便的获取到年月日,时分秒等信息 time.localtime() 2. 生成时间戳 time.time() 3. 将 ...

  2. NABCD分析——生活日历

    N(Need)需求 本软件的主体为日历.如今人们的生活趋于现代化,大家主要通过手机来查看日期,但我们每一天都有想要做或未完成的事情,也存在对自己有特殊意义的日子.每天人们都会有或大或小的支出与收入,想 ...

  3. Java数据结构之排序---选择排序

    简单选择排序的介绍: 从给定的序列中,按照指定的规则选出某一个元素,再根据规定交换位置后达到有序的目的. 简单选择排序的基本思想: 假定我们的数组为int [] arr = new int[n],第一 ...

  4. html初体验#1

    html的一些自见解 html 5 自带语义化,就是让标签带上感情色彩,方便人或浏览器区分 <b></b>与<strong></strong>的区别 & ...

  5. 利用python将两张表链接

    from pyspark.sql import SparkSessionfrom pyspark.sql.types import *import os def getUser(spark,path) ...

  6. ubuntu16虚拟机迁移/移动/复制后无法上网

    修改grub配置 如果没有网卡,需要配置 sudo vi /etc/default/grub 将 GRUB_CMDLINE_LINUX="" 修改为 GRUB_CMDLINE_LI ...

  7. lr中用C语言比较两个字符串变量

    以下脚本,定义两个一样的字符数组,对比后,打印出result的值: Action() { int result; char string1[] = "We can see the strin ...

  8. 【洛谷T89379 【qbxt】复读警告】

    题目链接 这个题可以应用dp #include<bits/stdc++.h> using namespace std; ; inline int read() { ,b=; char c= ...

  9. 【C++ STL 优先队列priority_queue】

    https://www.cnblogs.com/fzuljz/p/6171963.html

  10. 将html转化为canvas图片(清晰度高)的方法

    var copyDom = document.querySelector('.fenxiang1'); var width = copyDom.offsetWidth;//dom宽 var heigh ...