首页 > 其他分享 >多重背包

多重背包

时间:2024-10-03 18:50:05浏览次数:8  
标签:多重 cnt 背包 int ++ maxn 体积

int w[maxn], v[maxn]; //w[i] 代表第 i 种物品价值 v[i] 代表体积

int f[maxn][maxm]; //前 i 种物品用了 j 的体积所能得到的最大价值

int cnt = 0; //总共拆成了多少个物品
for (int i = 1; i <= n; ++i)
{
int w, u, v;// 价值,个数,体积
cin >> w >> v >> u;
int k = 1; //先拆一个
while (u >= k)
{
++cnt;
:: w[cnt] = w * k;
:: v[cnt] = v * k;
u -= k;
k *= 2;
}
if (u != 0)
{
++cnt;
:: w[cnt] = w * u;
:: w[cnt] = v * u;
}
}
//再做一边 01背包
for (int i = 1; i <= n; ++i)
{
for (int j = 0; j <= m; ++j)
{
f[i][j] = f[i - 1][j];
if (j - v[i] >= 0) f[i][j] = max(f[i][j], f[i - 1][j - v[i]] + w[i]);
}
}

标签:多重,cnt,背包,int,++,maxn,体积
From: https://www.cnblogs.com/xu-jh2024/p/18445891

相关文章

  • leetcode刷题day34|动态规划Part03 背包问题(01背包问题 二维、01背包问题 一维、416.
    0-1背包问题二维动规五部曲1、确定dp数组以及下标的含义dp[i][j]表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。(取物品时可以是取0-i的任意一个,或者是他们的组合)2、确定递推公式不放物品i:背包容量为j,里面不放物品i的最大价值是dp[i-1][j]......
  • 1267:【例9.11】01背包问题(从二维优化一维dp问题)
    代码如下:#include<iostream>usingnamespacestd;intdp[10010],w[200],c[200];intmain(){ intm,n; cin>>m>>n; for(inti=1;i<=n;i++) { cin>>w[i]>>c[i]; } for(inti=1;i<=n;i++) { for(intj=m;j......
  • 【DP解密多重背包问题】:优化策略与实现
    文章目录什么是多重背包问题?多重背包问题的数学模型例题多重背包问题Ⅰ多重背包问题Ⅱ总结什么是多重背包问题?多重背包问题是一个经典的组合优化问题。与标准背包问题不同,在多重背包问题中,每种物品可以选择多个,而不是只选择一次。具体来说,给定一个背包的容量和若......
  • 动态规划(有背包问题)
    目录1.动态规划的介绍2.动态规划的例题第1道题数字三角形(如果想看递归写法可以到我的记忆化递归里去看看记忆化递归_将递归程序记忆化-CSDN博客)第2道题最长公共子序列(模板) 第3道题 最长上升子序列第4道题最大子段和背包系列问题01背包完全背包1.动态规划......
  • [题目记录]一本通高手训练-01背包
    题意有\(n\)个物品,每个物品体积为\(s_i\),价值为\(v_i\),求背包容量为\(1,2,\cdotsm\)时最大价值.\(n\le1e6,m\le1e5,s\le300,v\le1e9\)时空限制\(5s,512MB\)题解普通01背包复杂度\(O(nm)\),无法满足\(n\le1e6,m\le1e5\).发现\(s\le300\),可以考虑......
  • 923kmp 01背包
    kmp遍历一次主串匹配子串求next数组看前后缀相同的个数不匹配时根据next的值移动p3375点击查看代码voidgetNext(strings,intnextt[]){intj=0;nextt[0]=0;for(inti=1;i<s.size();i++){while(j>0&&s[i]!=s[j]){......
  • abc367F 判断区间构成的多重集合是否相同
    给定长度为N的两个数组A[i]和B[i],有Q组询问,每次给定(l[i],r[i],L[i],R[i]),问由A[l[i]]A[r[i]]构成的multiset,与B[L[i]]B[R[i]]构成的multiset是否相同?范围:1<=N,Q<=2E5,1<=A[i],B[i]<=N,1<=l[i]<=r[i]<=N,1<=L[i]<=R[i]<=N分析:将int映射为u64,因为集合不区分先后,而加法满足交换......
  • 01背包问题之背包容量为什么要倒序遍历?(以C++代码具体实现为例)
    首先是先阐述一下背包问题:有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用依次,求解将哪些物品装入背包里物品价值总和最大。这里不解释代码的其他部分,只对代码中的背包容量遍历进行具体的解释,首先给出遍历部分的代......
  • 终极震荡指标UOS:抄底逃顶、趋势跟随,一个指标多重用法!
    最近的行情可谓是非常割裂了,上证指数一直比较坚挺,但是赚钱的板块非常少。根据老Q的经验,当绿线的评分处于低位但指数持续上行时,投资宽基指数的体验是明显比投资个股或者板块的体验要好的——毕竟只有少数幸运儿可以在极端行情下压对宝。可能很多朋友已经感受到了,3月份之前,哪......
  • 【洛谷 P1048】[NOIP2005 普及组] 采药 题解(动态规划+01背包)
    [NOIP2005普及组]采药题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株......