01背包+完全背包+多重背包
#include <bits/stdc++.h>
using namespace std;
const int maxn=10005;
int dp[maxn],t,n,c;
void zeropack(int cost,int val) {
for(int j=c;j>=cost;j--) {
dp[j]=max(dp[j],dp[j-cost]+val);
}
}
void completepack(int cost,int val) {
for(int j=cost;j<=c;j++)
dp[j]=max(dp[j],dp[j-cost]+val);
}
void multipack(int cost,int val,int num) {
if(num*cost>=c) {
completepack(cost,val);
return ;
}
int k=1;
while(k<num) {
zeropack(k*cost,k*val);
num-=k;
k*=2;
}
zeropack(num*cost,num*val);
}
int main() {
ios::sync_with_stdio(false);
return 0;
}