首页 > 多重背包
头像 ddhw111
发表于 2024-05-03 21:40:32
多重背包 链接:https://ac.nowcoder.com/acm/problem/235950 来源:牛客网 做法:适用于物品数量不是无限但又不止一个的背包问题,一开始想到的是将n个相同重量的物品当作n个不同的物品,但完全背包的复杂度已经汗流浃背,所以我们需要把这个重复的n进行优化,我们尽量去 展开全文
头像 在刷题的单身狗很开心
发表于 2023-10-08 21:27:17
首先可以将多重背包的每一种物品的数量都看做一种物品,这样就转化成了01背包。但是由于数据过大会超时。 所以在这里采用二进制的优化,可以使用二进制将其某种物品的数量捆绑成1,2,4,8.。。。。。。这样可以将表示的数量缩短。 然后采用01背包的做法即可。 #include & 展开全文
头像 2022115886
发表于 2023-07-29 12:12:42
背包问题: 起初并未想到二进制优化,因为这一题数据范围不大,因此可以用O(n3)的解法,提交代码如下: include <bits/stdc++.h> using namespace std; int n,t; int x,w,v; int dp[101][1001]; in 展开全文
头像 2022115828
发表于 2023-07-14 10:46:11
思路:模板题,利用二进制优化 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=100010; int w[N],v[N],dp[N]; int main(){ ios::sy 展开全文
头像 咻132
发表于 2025-07-14 21:25:44
拆成01背包 #include<iostream> using namespace std; const int M=2010; int v[M],w[M],n,T,f[M],vv,ww,x,p=0; int main(){ cin>>n>>T; 展开全文
头像 Z_L_G
发表于 2025-05-01 11:56:11
题意 种物品,每种物品有 个,体积 ,价值 ,背包体积 ,求最大价值 思路 可以把每个物品直接放 次,转化为01背包,大数据会TLE 打包-二进制优化:显然,每个数n可以拆成所有不大于它的二进制次方组合+剩余部分,如此便可表示从0~n,所以对每个 进行拆分,从1开始,不断拆分,直到拆不出 展开全文
头像 hzfan_club
发表于 2022-08-15 23:37:49
多重背包模板题 这题数据范围给的200 可以用n^3做法不会超时 数据范围为8e8 n^3做法如下 #include<bits/stdc++.h> using namespace std; #define endl "\n" #define int long long #define 展开全文

等你来战

查看全部