2 条题解

  • 1
    @ 2026-4-26 20:08:44
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e5 + 10;
    int n, m, t, w, c;
    struct node{
    	int w, c;
    };
    vector<node> a[N];
    int dp[N];
    int main(){
    	cin >> n >> m;
    	for(int i = 1 ; i <= n ; i++){
    		cin >> t;
    		while(t--){
    			cin >> w >> c;
    			a[i].push_back((node){w, c});
    		}
    	}
    	for(int i = 1 ; i <= n ; i++){
    		for(int j = m ; j >= 1 ; j--){
    			for(int k = 0 ; k < a[i].size() ; k++){
    				if(j >= a[i][k].w){
    					dp[j] = max(dp[j], dp[j - a[i][k].w] + a[i][k].c);
    				}
    			}
    		}
    	}
    	cout << dp[m];
    	return 0;
    } 
    
    

    信息

    ID
    3274
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    152
    已通过
    66
    上传者