2 条题解

  • 1
    @ 2022-10-3 12:06:15
    /***************************************
    Note:
    ***************************************/
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <iomanip>
    #include <cmath>
    #include <queue>
    #include <map>
    #include <stack>
    #include <vector>
    #include <fstream>
    using namespace std;
    #define LL long long
    #define ULL unsigned long long
    #define ULLI unsigned long long int
    const int N = 1e6+6;
    int dp[N];
    int main(){
    	int n,m;
    	cin >> n >> m;
    	for (int i = 1;i<=n;i++){
    		int s,v,w;
    		cin >> s >> w >> v;
    		for (int j = 1;j<=s;j*=2){
    			for (int k = m;k>=j*w;k--){
    				dp[k] = max(dp[k],dp[k - j * w] + j * v);
    			}
    			s-=j;
    		}
    		if (s){
    			for (int k = m;k>=s*w;k--){
    				dp[k] = max(dp[k],dp[k - s * w] + s * v);
    			}
    		}
    	}
    	cout << dp[m] << endl;
        return 0;
    }
    

    信息

    ID
    2835
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    51
    已通过
    12
    上传者