洛谷P1853 投资的最大效益 动态规划

题目
多重背包,不过要多考虑一个年限,最开始用map复杂度太高,改用数组顶着优化勉强过了。
本金为背包空间,投资额为消耗的空间,利息为价值

#pragma GCC optimize(3)
#pragma GCC optimize("Ofast", "inline")
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

typedef long long ll;

struct Bond{
    int total;
    int excess;
};
int S, N, D;
Bond bond[11];
int dp[30000000];


int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> S >> N >> D;
    for (int i = 1; i <= D; i++) {
        cin >> bond[i].total >> bond[i].excess;
    }

    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= D; j++) {
            for (int k = bond[j].total; k <= S; k++) {
                dp[k] = max(dp[k], dp[k - bond[j].total] + bond[j].excess);
            }
        }
        S += dp[S];
    }
    cout << S << endl;
    return 0;
}```

你可能感兴趣的:(动态规划)