POJ2431 二叉堆(優先佇列)以及貪心演算法

2021-06-18 15:26:57 字數 643 閱讀 3386

題目大意:

汽車從遠處行駛向乙個城鎮,路途很遠,汽油不足,沿途有一些加油站,給出加油站的位置和存油,在汽車油箱無限大的情況下求出所需加油次數最少為多少。

分析:由於要加油的次數最少,因此最好是一次加的油量盡量多,而每次經過乙個加油站,可以看做,今後可以在任意時刻使用這個站來加油,因此把當前汽油可達的加油站存入乙個堆中,每次沒油的時候從中取出最多的那次,當堆中沒有油的時候就輸出-1.

注意加油站的位置是距離城鎮的位置

我想吐個槽。。。acm題中的cows是宇宙間最聰明最傻缺最無理的生物。。。

#include#include#includeusing namespace std;

struct st

}stop[10002];

int main()

sort(stop,stop+n+1);

scanf("%d%d",&l,&p);

pos=l;

ans=0;

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

else

}pos=stop[i].dist;

p-=d;

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

} printf("%d",ans);

}}

POJ 2431(優先佇列)

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

POJ2431 優先佇列 貪心

題目大意 見 挑戰程式設計競賽 p74。我的理解 優先佇列 貪心 注意把輸入的距離 加油站到終點 改為起點到加油站。因為求得是最優解,需要盡可能少的加油站,所以我們每次希望去加油的時候 加最大的那個,因而將加油站push進priority queue 堆結構,預設每次彈出最大值 在到達加油站 i 時...

POJ 2431 貪心 優先佇列

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