洛谷 1757 通天之分组背包
这是动态规划的分组背包
#include <bits/stdc++.h> using namespace std; const int M=1010,N=110; int n,m,f[M],a[M],b[M],c[N][N],d[N],cc,cnt; int main() { scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) { scanf("%d%d%d",&a[i],&b[i],&cc); cnt=max(cnt,cc); d[cc]++; c[cc][d[cc]]=i; } for(int i=1;i<=cnt;i++) for(int j=m;j>=0;j--) for(int k=1;k<=d[i];k++) if(j>=a[c[i][k]]) f[j]=max(f[j],f[j-a[c[i][k]]]+b[c[i][k]]); printf("%d\n",f[m]); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步