P1757[分组背包]
一道分组背包但是要改输入方式
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1001;
int m,n;
int f[N],v[N],w[N],b[N];
int g[350][350];
int main()
{
scanf("%d%d",&m,&n);
int t = -1,x;
for(int i = 1 ;i <= n ; i ++ )
{
scanf("%d%d%d",&v[i],&w[i],&x);
t = max(x,t);
b[x]++;//映射到w,v的值
g[x][b[x]] = i;
}
for (int i = 1; i <= t; i++)
for (int j = m; j >= 0; j--)
for (int k = 1; k <= b[i]; k++)
if (j >= v[g[i][k]])
f[j] = max(f[j], f[j - v[g[i][k]]] + w[g[i][k]]);//映射到w,v的值
printf("%d\n",f[m]);
}
“风雪越是呼啸,雪莲越是绽放”