提交时间:2026-05-30 18:58:06
运行 ID: 442882
#include <iostream> #include <algorithm> using namespace std; int a[10005]; int main() { int n,m; cin>>n>>m; while (n--){ int v, w, p; cin >>v>>w>>p; if (p==0){ for (int i =v;i<=m;i++) { a[i]=max(a[i],a[i-v]+w); } } else { int num=p; for (int k=1;num>0;k<<= 1) { int u=min(k, num); int nv=v*u; int nw=w*u; for (int i=m;i>=nv;i--) { a[i]=max(a[i],a[i-nv]+nw); } num-=u; } } } cout<<a[m]<< endl; return 0; }