POJ2431 優先佇列 貪心

2022-01-10 11:26:29 字數 810 閱讀 9414

題目大意:

見《挑戰程式設計競賽》p74。

我的理解:

優先佇列+貪心

注意把輸入的距離(加油站到終點)改為起點到加油站。

因為求得是最優解,需要盡可能少的加油站,所以我們每次希望去加油的時候 加最大的那個,因而將加油站push進priority_queue(堆結構,預設每次彈出最大值)

在到達加油站 i 時,就獲得了一次在之後的任何時候都可以在加 stop[i].second 單位汽油的權利。

#include#includeusing namespace std;

const int maxn = 10000 + 10;

typedef pairp;

int l, p, n;

p stop[maxn];

int cmp(p p1, p p2)

void solve()

tank += que.top();

que.pop();

ans++;

}tank -= d;

pos = stop[i].first;

que.push(stop[i].second);

}cout << ans << endl;

}int main()

cin >> l >> p;

for (int i = 0; i < n; i++)

sort(stop, stop + n, cmp);

solve();

}return 0;

}

POJ 2431 貪心 優先佇列

題意 一輛卡車距離重點l,現有油量p,卡車每前行1公尺耗費油量1,途中有一些加油站,問最少在幾個加油站加油可使卡車到達終點或到達不了終點。思路 運用優先佇列,將能走到的加油站的油量加入優先佇列中,油不夠時加入優先佇列中數值最大的油,如果油不夠時佇列裡為空則到達不了。include include i...

POJ 2431(優先佇列)

題意 從起點到終點距離為n,走1單位路程消耗1單位油,路上會有m個加油站分別出現在si的位置,路過加油站時可以選擇是否加油。問到達加油站最少需要加幾次油,不能到輸出 1.分析 整體上來看,汽車每經過乙個加油站就擁有了在這個加油站加油的能力,可以將加油站加入優先佇列,沒油時優先選取大的。收穫 路過即獲...

POJ2431 資料結構 優先佇列

題目概述 這道題是說一輛小車每單位長度露單位油,然後就這麼開呀開呀想要到距離為l的另乙個城鎮去。路上有一些加油站,每個加油站距離目標城鎮的距離給了,能加的油給了,判斷最少需要的加油次數。演算法思想 嗯大概是這樣,我們該如何找到最少的加油次數呢。答案是將加油站看成 備胎 所以當小車每經過乙個加油站,都...