1 条题解

  • 0
    @ 2025-10-14 9:23:06
    #include <bits/stdc++.h>
    using namespace std;
    int t, n, m;
    int a[20];
    int b[20];
    int dp[200000];
    int maxm = 0, maxl = 0;
    void f(int i, int l, int my) {
        if (i <= 0) {
            if (l <= t) {
                if (my > maxm) {
                    maxm = my;
                    maxl = l;
                }
            }
            return;
        }
        f(i - 1, l + a[i - 1], my + b[i - 1]);
        f(i - 1, l, my);
        return;
    }
    int main() {
        cin >> t >> n;
        for (int i = 0; i < n; i++) {
            cin >> a[i] >> b[i];
        }
        f(n, 0, 0);
        t -= maxl;
        cin >> m;
        for (int i = 0; i < m; i++) {
            int x, y;
            cin >> x >> y;
            for (int j = x; j <= t; j++) {
                dp[j] = max(dp[j], dp[j - x] + y);
            }
        }
        cout << dp[t];
        return 0;
    }
    
    • 1

    信息

    ID
    1292
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者