```
#include<stdio.h>
int max(int x,int y) {
return x > y ? x : y;
}
int w[1010],v[1010],g[1010],dp[1010],a[1010],c[101][1010];
int main()
{
int m,n;
scanf("%d %d",&m,&n);
for(int i=1;i<=n;i++){
scanf("%d %d %d",&w[i],&v[i],&g[i]);
}
int k=0;
for(int i=1;i<=n;i++){
if(a[g[i]]==0){
k++;
}
a[g[i]]++;
c[g[i]][a[g[i]]]=i;
}
for(int i=1;i<=k;i++){
for(int j=m;j>=1;j--){
for(int b=0;b<=a[g[i]];b++){
if(j>=w[c[i][b]])//记得加等于
dp[j]=max(dp[j],dp[j-w[c[i][b]]]+v[c[i][b]]);
}
}
}
printf("%d",dp[m]);
}
```
by myxsb @ 2024-01-18 14:46:05
@[myxsb](/user/1202041) 一看就是大佬
by _HCl_ @ 2024-01-18 15:38:40
@[myxsb](/user/1202041) 啊懂了跪谢!
by yuyujun @ 2024-01-18 18:57:14
666
by Andy_WA @ 2024-02-07 22:27:22