首页 > 其他分享 >【动态规划】背包问题----分组背包

【动态规划】背包问题----分组背包

时间:2022-10-01 15:34:32浏览次数:68  
标签:背包 int ---- 分组 物品 include

题目描述

acwing 分组背包

要点

1.每组物品有若干个,同一组内的物品最多只能选一个
2.总体积不超过V
3.总价值最大

分析

状态计算

用v[i][j]表示第i组的第j个物品的体积,w[i][j]表示第i组的第j个物品的价值

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 110;

int n, m;
int s[N];
int v[N][N], w[N][N], f[N];

int main()
{
    scanf ("%d%d", &n, &m);
    
    for (int i = 1; i <= n; i ++)
    {
        scanf ("%d", &s[i]);
        for (int j = 1; j <= s[i]; j ++)
        scanf ("%d%d", &v[i][j], &w[i][j]);    
    }
    
    for (int i = 1; i <= n; i ++)
        for (int j = m; j >= 0; j --) //即for (int j = m; j >= v[i][0]; j --)
            for (int k = 1; k <= s[i]; k ++)
            if (v[i][k] <= j)
            f[j] = max (f[j], f[j - v[i][k]] + w[i][k]);
            
    printf ("%d\n", f[m]);
    
    return 0;
}

标签:背包,int,----,分组,物品,include
From: https://www.cnblogs.com/LHgogo/p/16747263.html

相关文章

  • 【压力测试】使用stress 工具对CPU,内存, 硬盘进行压力测试
    1、安装sudoapt-getupdatesudoapt-getinstall-ylinux-tools-$(uname-r)sudoapt-getinstallstress  2、命令介绍stress--help`stress'imposesce......
  • 221001
    T1算术题意给定长度为\(n\)的数列\(a\),求有多少\((i,j)\)满足\(j<i,a_ia_j<a_i+a_j\)。Solution简单的在草稿本上写一写就可以发现一些特别的规律。在这道题中......
  • Vm无法连接到虚拟机,请确保您有权限运行该程序、访问该程序使用的所有目录以及访问所有
    可能是杀掉进程导致解决办法:1.首先杀掉所有VM打头的任务。2.删掉所有lck文件3.VM文件夹内有一串很长的数字命名的文件夹或文件,删掉4.发现被VMware-vmx.exe占用5.打开......
  • C语言中的循环语句要点
    C语言中循环语句主要有三种:while;for;dowhile。1.while循环​​//while语法结构​​​​while(表达式)​​​​{​​​​循环语句;​​​​}​​1.1while语句中的break......
  • sept.24 Hopping Rabbit
    portkey扫描线把所有坑挪到\(d\timesd\)的区域扫描线找有没有空挡第一步挪注意\(x_1,y_1,x_2,y_2\)有负数可能全覆盖:比如\(x_2-x_1>d\)第二步扫描维护行最......
  • awk下
    ####两个字段相互去比较匹配#awk-F':''$3<$4'inittab匹配第三段小于第4段的行#$3<$4指定第三段小于第四段的行#awk-F':''$3<$4{print$1}'inittab匹配第三段小......
  • centos7 删除图形界面
    按照/etc/inittab内部说明做如下改动#改名备份 mv/etc/systemd/system/default.target/etc/systemd/system/default.target.bak #重新软连接文本界面......
  • 查看系统负载w
    ####w命令:#18:29:18表示系统启动时间#up1min,表示启动了多长时间#2users,表示登录了几个用户#loadaverage:0.41,0.17,0.06表示系统负载,分别为1分钟,5分钟,15分......
  • 肖sir___第二个月Servlet__07
    1.1Servlet简介Servlet是什么?Servlet(ServerApplet)是JavaServlet的简称称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在......
  • top命令
    ####top核心作用可以查看到具体哪个进程占用cpu较多#top动态显示系统资源情况,主要关注CPU与MEM两列#第一行和w命令查看到的内容是一样的#第二行:Tasks:#250total,表......