1 条题解

  • 0
    @ 2026-10-25 17:48:50

    思路

    物品数量上限10,预算6000;二进制拆分须保持数量上限,优化的是价值而非价格。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){int n,m;cin>>n>>m;vector<int>d(m+1);while(n--){int v,w,s;cin>>v>>w>>s;for(int k=1;s;k*=2){int z=min(k,s);s-=z;for(int j=m;j>=z*v;j--)d[j]=max(d[j],d[j-z*v]+z*w);}}cout<<d[m]<<'\n';}
    
    • 1

    信息

    ID
    1302
    时间
    1000ms
    内存
    64MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者