提交时间:2025-12-26 15:28:52

运行 ID: 78212

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, h; cin >> n >> h; vector<int> F(n), d(n), t(n-1); for (int i = 0; i < n; ++i) cin >> F[i]; for (int i = 0; i < n; ++i) cin >> d[i]; for (int i = 0; i < n-1; ++i) cin >> t[i]; vector<vector<int>> dp(h*12+1, vector<int>(n, 0)); for (int time = 1; time <= h*12; ++time) { for (int i = 0; i < n; ++i) { if (i > 0) dp[time][i] = max(dp[time][i], dp[time][i-1]); if (time >= t[i-1]) { int fish = 0; for (int j = 0; j < time; ++j) { fish += max(0, F[i] - j * d[i]); } dp[time][i] = max(dp[time][i], dp[time-t[i-1]][i-1] + fish); } } } cout << dp[h*12][n-1] << endl; return 0; }