11 条题解

  • 1
    @ 2026-4-26 19:45:33

    优化:滚动数组

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e3 + 10;
    const int mod = 1e9 + 7;
    const int INF = 0x3f3f3f3f;
    const long long LLINF = 0x3f3f3f3f3f3f3f3fLL;
    int n, m, w[N], c[N], dp[N];
    int main(){
    	cin >> m >> n;
    	for(int i = 1 ; i <= n ; i++){
    		cin >> w[i] >> c[i];
    	}
    	for(int i = 1 ; i <= n ; i++){
    		for(int j = m ; j >= w[i] ; j--){
    			dp[j] = max(dp[j], dp[j - w[i]] + c[i]);
    		}
    	}
    	cout << dp[m] << endl;
    	return 0;
    } 
    

    信息

    ID
    678
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    564
    已通过
    195
    上传者