多重背包二进制优化
因为一直没有搞明白多重背包二进制优化的原理,故作此文
问题描述
有
第
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
求法:
朴素求法
把多重背包转变为01背包求解
优化求法
二进制优化
什么是二进制优化
代码(二进制优化版)
#include<bits/stdc++.h> using namespace std; int n,w; int va[100010],we[100010]; int f[100010]; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } int main() { n=read();w=read(); int num=0; for(int i=1;i<=n;i++) { int val,wei,m; val=read(); wei=read(); m=read(); for(int j=1;j<=m;j<<=1) { num++; va[num]=j*val; we[num]=j*wei; m-=j; } if(m){ num++; va[num]=m*val; we[num]=m*wei; } } for(int i=1;i<=num;i++) { for(int j=w;j>=we[i];j--) { f[j]=max(f[j],f[j-we[i]]+va[i]); } } printf("%d\n",f[w]); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!