1 条题解

  • 0
    @ 2025-10-14 9:23:22
    #include <bits/stdc++.h>
    using namespace std;
    int n, t;
    int dp[100000];
    int maxl = 0;
    int main() {
        cin >> n >> t;
        for (int i = 0; i < n; i++) {
            int a, b, c;
            cin >> c >> a >> b;
            for (int k = 0; (1 << k) <= c; k++) {
                int na = a << k, nb = b << k;
                for (int j = t; j >= nb; j--) {
                    dp[j] = max(dp[j], dp[j - nb] + na);
                    maxl = max(maxl, dp[j]);
                }
                c -= (1 << k);
            }
            a *= c, b *= c;
            for (int j = t; j >= b; j--) {
                dp[j] = max(dp[j], dp[j - b] + a);
                maxl = max(maxl, dp[j]);
            }
        }
        cout << maxl;
        return 0;
    }
    
    • 1

    信息

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