https://leetcode.com/problems/minimum-number-of-refueling-stops/description/
这次周赛比较容易...但是第四题还是没弄出来..
0-1背包,dp[t]表示当前为止 t次加油 最多能走的距离
class Solution {
public:
int minRefuelStops(int target, int startFuel, vector<vector<int>>& ss) {
// int dp[ss.size() + 1];
if (startFuel >= target) return 0;
if (ss.size() == 0) return startFuel >= target ? 0 : -1;
long long dp[ ss.size() + 1 ];
memset(dp, 0 , sizeof(dp));
dp[0] = startFuel;
int ret = INT_MAX;
for (int i = 0; i < ss.size(); i++) {
int t = i+1;
for (t = i + 1; t >= 1; t--) {
if (dp[t - 1] < ss[i][0]) continue;
dp[t] = max(dp[t-1] + ss[i][1], dp[t]);
if (dp[t] >= target) ret = min(t , ret);
}
}
return ret == INT_MAX ? -1 : ret;
}
};