#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,num[110],v[110],ans;
int val[100010];
void package01(int weigh){
for(int i=m;i>=weigh;--i)
val[i]=max(val[i],val[i-weigh]);
}
void packageComplete(int weigh){
for(int i=weigh;i<=m;++i)
val[i]=max(val[i],val[i-weigh]);
}
void packageMultiple(int nums,int val){
if(nums*val>=m)
packageComplete(val);
else{
for (int k = 1; num > 0; k*=2)
{
if (k > num) k = num;
num -= k;
pcakage01(val*k);
}
}
}
混合背包(模板)只保留了函数部分(每个函数对应了每一种背包)侧面反应了多重背包可以换为01和完全背包而且更快
猜你喜欢
转载自blog.csdn.net/weixin_42165786/article/details/81562556
今日推荐
周排行