多重背包原理

简介: 笔记

多重背包


每件物品的个数有限制


朴素算法

与完全背包的朴素算法类似 时间复杂度O ( N ∗ V ∗ S )

7.png



优化成一维时需要从大到小枚举j

for (int i = 1;i <= n;++i) {
  for (int j = 0;j <= m;++j) {
    for (int k = 0;k * v[i] <= j && k <= s[i];++k) {
      f[i][j] = max(f[i][j], f[i - 1][j - k * v[i]] + k * w[i]);
    }
  }
}


二进制优化8.png

int cnt = 0;
for (int i = 1;i <= n;++i) {
   int a, b, s;
   cin >> a >> b >> s;
   int k = 1;
   while (k <= s) {
    cnt++;
    v[cnt] = a * k;
    w[cnt] = b * k;
    s -= k;
    k *= 2;
   }
   if (s > 0) {
    ++cnt;
    v[cnt] = a * s;
    w[cnt] = b * s;
   }
}
n = cnt;
for (int i = 1; i <= n;++i) {
   for (int j = m;j >= v[i];--j) {
    f[j] = max(f[j], f[j - v[i]] + w[i]);
   }
}


目录
相关文章
|
JavaScript 前端开发 C#
WPF技术之WebBrowser控件
WPF WebBrowser控件用于在WPF应用程序中嵌入浏览器功能。
467 0
|
XML Java 编译器
Lombok 天天用,却不知道它的原理是什么?
Lombok 天天用,却不知道它的原理是什么?
154 1
创维成首个传统彩电叛逃者 向互联网迈出蒙眼前行第一步
创维成首个传统彩电叛逃者 向互联网迈出蒙眼前行第一步
175 0
创维成首个传统彩电叛逃者 向互联网迈出蒙眼前行第一步
|
SQL 分布式计算 数据管理
性能提升约 7 倍!Apache Flink 与 Apache Hive 的集成
随着 Flink 在流式计算的应用场景逐渐成熟和流行,如果 Flink 能同时把批量计算的应用场景处理好,就能减少用户在使用 Flink 时开发和维护的成本,并且能够丰富 Flink 的生态。SQL 是批计算中比较常用的工具,所以 Flink 针对于批计算也以 SQL 为主要接口。本次分享主要介绍 Flink 对批处理的设计与 Hive 的集成。
性能提升约 7 倍!Apache Flink 与 Apache Hive 的集成
[.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现
原文:[.NET领域驱动设计实战系列]专题五:网上书店规约模式、工作单元模式的引入以及购物车的实现 一、前言   在前面2篇博文中,我分别介绍了规约模式和工作单元模式,有了前面2篇博文的铺垫之后,下面就具体看看如何把这两种模式引入到之前的网上书店案例里。
1506 0
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~