這不是就noip旅行家的預算嗎。只不過這個每公里消耗一公升油,感覺更簡單了些。
貪心,每次找乙個點後面第一油價比它低的點,想辦法到那裡讓油全部用完。找它後面第乙個比它**低的點可以用單調棧處理。
#include
#include
#include
using namespace std;
typedef unsigned long long ll;
const int n = 200000;
ll d[n], p[n], pre[n];
ll t, n, k, top;
ll s[n];
ll dfs(ll l, ll r)
if(d[i] - d[pos] <= t)else
} return ans;
}int main()
for(int i = n - 1; i >= 0; i--)
if(top == 0) pre[i] = n;
else pre[i] = s[top];
s[++top] = i;
}pre[n] = n + 1;
if(ok) puts("-1");
else
printf("%lld\n", dfs(0, n));
return
0;}
51Nod 1288 汽油補給
1288 汽油補給 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 160 難度 6級演算法題 有 n 1 個城市,0是起點n是終點,開車從0 1 2.n,車每走1個單位距離消耗1個單位的汽油,油箱的容量是t。給出每個城市到下乙個城市的距離d,以及當地的油價p,求走完整個...
51nod 1288 汽油補給
有 n 1 個城市,0是起點n是終點,開車從0 1 2.n,車每走1個單位距離消耗1個單位的汽油,油箱的容量是t。給出每個城市到下乙個城市的距離d,以及當地的油價p,求走完整個旅途最少的花費。如果無法從起點到達終點輸出 1。例如d p t 15,最小花費為41,在0加上10個單位的汽油,在1加滿15...
51nod 1288 汽油補給
有 n 1 個城市,0是起點n是終點,開車從0 1 2.n,車每走1個單位距離消耗1個單位的汽油,油箱的容量是t。給出每個城市到下乙個城市的距離d,以及當地的油價p,求走完整個旅途最少的花費。如果無法從起點到達終點輸出 1。例如d p t 15,最小花費為41,在0加上10個單位的汽油,在1加滿15...