1 条题解

  • 0
    @ 2025-4-25 22:18:07
    #include<iostream>
    using namespace std;
    const int N=12010, M=2010;
    int n,m;
    int v[N],w[N];
    int f[M];
    int main()
    {
    	cin>>n>>m;
    	int c=0;
    	for(int i=1;i<=n;i++)
        {
    		int a,b,s;
    		cin>>a>>b>>s;
    		int k=1;
    		while(k<=s)
            {
    			c++;
    			v[c]=a*k;
    			w[c]=b*k;
    			s-=k;
    			k*=2;
    		}
    		if(s>0)
            {
    			c++;
    			v[c]=s*a;
    			w[c]=b*s;	
    		}
    		
        }
    	n=c;
    	for(int i=1;i<=n;i++)
        {
    	    for(int j=m;j>=v[i];j--)
    	    {
                f[j]=max(f[j],f[j-v[i]]+w[i]);
            }
        }
    	cout<<f[m]<<endl;
    	return 0;
    } 
    
    ```
    `
    • 1

    信息

    ID
    3273
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    40
    已通过
    19
    上传者