首页 > 其他分享 >AcWing 2. 01背包问题

AcWing 2. 01背包问题

时间:2023-04-02 10:33:20浏览次数:42  
标签:01 int MAX 背包 include 件物品 dp AcWing

有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。

第 i件物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式

第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。

接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i件物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0<N,V≤1000


0<vi,wi≤1000

 

输入样例

4 5
1 2
2 4
3 4
4 5

输出样例:

8

 

状态分析:

代码实现:

1)空间未优化版本

#include<iostream>
#include<algorithm>
using namespace std;
const int MAX=1005;
int v[MAX],w[MAX];
int f[MAX][MAX];
int N,V;

int main(){
    cin>>N>>V;
    for(int i=1;i<=N;i++)cin>>v[i]>>w[i];
    for(int i=1;i<=N;i++){
        for(int j=1;j<=V;j++){
            f[i][j]=max(f[i][j],f[i-1][j]);
            if(j>=v[i])
            f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]);
        }
        
    }
    cout<<f[N][V]<<endl;
    return 0;
}

2)空间优化版本

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

 

标签:01,int,MAX,背包,include,件物品,dp,AcWing
From: https://www.cnblogs.com/hxss/p/17280030.html

相关文章

  • 生活中的常识与原理001-天文-基础
    相关英文词汇:latitude/ˈlætɪtjuːd/,纬度,记忆时可以与ladder相关联,因为纬度是标识南北的线,就像梯子的格子一样。赤道为0度,北极为90度。注意与高度altitude相区别。longitude/ˈlɔndʒɪtjuːd/,经度。从南到北,与赤道垂直。0度经线贯穿英国格林尼治天文台。经度和纬度可以标......
  • 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......
  • [oeasy]python0123_中文字符_文字编码_gb2312_激光照排技术_王选
    中文编码GB2312回忆上次内容上次回顾了日韩各有编码格式日本有假名五十音一字节可以勉强放下 有日本汉字字符数量超过20000+  韩国有谚文数量超过500一个字节放不下 有朝鲜汉字字符数量超过20000+......
  • 每日总结2023-04-01
    今天完成了部分界面并修改了部分之前的界面成果:广告收益界面,LIstView中没有数据,暂时没有显示第二个界面用于车主添加产品类别,登记种类和数量第三个界面美化第四个界面为设备绑定界面 ......
  • 2023/04/01每日总结
    今天学习html,发现web页面不会做,现在从头开始学。准备做一个课表 ......
  • 2023-04-01 图论问题建模和floodfill
    图论问题建模和floodfillfloodfill(洪泛)实际就是图的遍历1图论问题例子:判断二分图题目来源:LeetCode785is-graph-bipartite:,判断二分图,因为题目中已经给出了邻接表,相当于已经给出了Graph,所以直接用二分图的核心算法即可,参考DFS实现二分图检测实现代码2图的建模和二......
  • 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......
  • 下载并安装matlab2018
    欢迎来到我的友链小屋下载链接:链接:https://pan.baidu.com/s/1zo_8g0iqWxEwbNa9-FesFw 提取码:4r1w 百度网盘vip:在拼多多搜索百度网盘一天vip 安装流程:http://www.zhanshaoyi.com/8567.html......