【題解】CSES 1158 Book Shop

【題目敘述】https://cses.fi/problemset/task/1158/
【解題想法】DP

#include <iostream>
using namespace std;
 
int n, x, dp[100005], h[1005], s[1005];
 
int main() {
    cin >> n >> x;
    for (int i = 0; i < n; i++){
        cin >> h[i];
    }
    for (int i = 0; i < n; i++){
        cin >> s[i];
        for (int j = x; j >= h[i]; j--){
            dp[j] = max(dp[j], dp[j-h[i]]+s[i]);
        }
    }
    cout << dp[x];
}
分享本文 Share with friends