首页 > 其他分享 >AcWing 1024. 装箱问题

AcWing 1024. 装箱问题

时间:2023-04-02 11:23:06浏览次数:42  
标签:1024 箱子 int 体积 物品 include 装箱 dp AcWing

有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数)。

要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。

输入格式

第一行是一个整数 V,表示箱子容量。

第二行是一个整数 n,表示物品数。

接下来 n 行,每行一个正整数(不超过10000),分别表示这 n 个物品的各自体积。

输出格式

一个整数,表示箱子剩余空间。

数据范围

0<V≤20000,
0<n≤30

输入样例:

24
6
8
3
12
7
9
7

输出样例:

0

 

题目分析:

本题与01背包分析方式一致,只需要将物体体积同时当成01背包问题中的体积和价值即可,最后答案为箱子容量减去最大价值即可。

代码实现:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e5+5;
int dp[N],w[N],v[N];
int main(){
    int V,n;
    cin>>V>>n;
    for(int i=1;i<=n;i++)cin>>w[i],v[i]=w[i];
    for(int i=1;i<=n;i++){
        for(int j=V;j>=w[i];j--)
        dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
    }
    cout<<V-dp[V]<<endl;
    return 0;
}

 

标签:1024,箱子,int,体积,物品,include,装箱,dp,AcWing
From: https://www.cnblogs.com/hxss/p/17280107.html

相关文章

  • AcWing 8. 二维费用的背包问题
    有 N 件物品和一个容量是 V 的背包,背包能承受的最大重量是 M。每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行三个整数,N,V,M,......
  • AcWing 9. 分组背包问题
    有N组物品和一个容量是V的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是vij,价值是wij,其中i是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数N,V,用空格隔开,分别......
  • AcWing 3. 完全背包问题
    有N种物品和一个容量是V的背包,每种物品都有无限件可用。第i种物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行两个......
  • AcWing 4. 多重背包问题
    有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行三个整数vi,wi,......
  • AcWing 2. 01背包问题
    有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个......
  • Acwing 799.最长连续不重复子序列
    原题链接代码#include<iostream>usingnamespacestd;constintN=100010;inta[N],f[N];intmain(){intn;cin>>n;intans=0,j=1;for(inti=1;i<=n;i++){scanf("%d",&a[i]);//读入该数组f[......
  • acwing 4405.统计子矩阵的和
    原题链接解题思路通过i和j来控制子矩阵的左右边界,通过s和t来控制子矩阵的上下边界,在子矩阵的和小于k时候,统计子矩阵的个数。代码#include<iostream>usingnamespacestd;constintN=550;inta[N][N];//i与j控制左右边界,st控制上下边界计算二维矩阵和intmai......
  • AcWing第97场周赛复盘总结
    4944.热身计算-AcWing题库给定两个正整数$a,b$,请你分别计算$\min(a,b)$以及$\lfloor\frac{|a-b|}{2}\rfloor$的值。$\lfloor\frac{|a-b|}{2}\rfloor$表示不大于$\frac{|a-b|}{2}$的最大整数。输入格式共一行,包含两个正整数$a,b$。输出格式共一......
  • AcWing 第 97 场周赛 ABC(dfs)
    https://www.acwing.com/activity/content/competition/problem_list/3088/果然绩点成绩和竞赛水平总得寄一个(tome4944.热身计算#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3......
  • AcWing 244. 谜一样的牛
    有 n 头奶牛,已知它们的身高为 1∼n且各不相同,但不知道每头奶牛的具体身高。现在这 n头奶牛站成一列,已知第 i 头牛前面有 Ai 头牛比它低,求每头奶牛的身高。输入格式第 1 行:输入整数 n。第 2..n 行:每行输入一个整数 Ai,第 i行表示第 i 头牛前面有 Ai 头牛比它......