我竟然没没想到分组背包怎么写!!!
a[i][k]记录第i组第k个在输入时的编号
for(int i=0;i<组数;i++)
{
for(int j=背包大小;j>=0;j--)
for(int k=0;k<本组个数;k++)
int ji=a[i][k];
if(zhong[ji]>=j)
ans[j]=max(ans[j],ans[j-zhong[ji]]+zhi[ji]);
}
随意手写的,代码可能有偏差,但思路是对的