2 条题解

  • 0
    @ 2025-2-22 9:55:03
    ```#include <bits/stdc++.h> 
    using namespace std;
    int main() {
        int m, n;
        cin >> m >> n;
        vector<int> dp(m + 1, -1);  
        dp[0] = 0;  
        
        for (int i = 0; i < n; ++i) {
            int a, b;
            cin >> a >> b;  
            for (int w = m; w >= 0; --w) {  
                if (dp[w] != -1) {
    
                    for (int k = 1; k <= b; ++k) {
                        int new_w = w + a * k;
                        if (new_w > m) break;  
                        if (dp[new_w] < dp[w] + k) {
                            dp[new_w] = dp[w] + k;
                        }
                    }
                }
            }
        }
        
        int max=0;
        for (int w=0;w<=m;++w) {  
            if (dp[w]>max) {
                max = dp[w];
            }
        }
        
        cout<<max<<endl;  
        
        return 0;
    }

    信息

    ID
    373
    时间
    1000ms
    内存
    64MiB
    难度
    9
    标签
    递交数
    13
    已通过
    5
    上传者