[蓝桥杯][算法训练VIP]旅行家的预算(单调栈+贪心)
題目描述
一個(gè)旅行家想駕駛汽車以最少的費(fèi)用從一個(gè)城市 到另一個(gè)城市(假設(shè)出發(fā)時(shí)油箱是空的)。給定兩個(gè)城市之間的距離D1、汽車油箱的容量C(以升為單位)、每升汽油能行駛的距離D2、出發(fā)點(diǎn)每升汽油價(jià)格P 和沿途油站數(shù)N(N可以為零),油站i離出發(fā)點(diǎn)的距離Di、每升汽油價(jià)格Pi(i=1,2,……N)。計(jì)算結(jié)果四舍五入至小數(shù)點(diǎn)后兩位。如果無(wú)法到達(dá)目的 地,則輸出“No Solution”。
輸入
第一行為4個(gè)實(shí)數(shù)D1、C、D2、P與一個(gè)非負(fù)整數(shù)N;
接下來(lái)N行,每行兩個(gè)實(shí)數(shù)Di、Pi。
輸出
如果可以到達(dá)目的地,輸出一個(gè)實(shí)數(shù)(四舍五入至小數(shù)點(diǎn)后兩位),表示最小費(fèi)用;否則輸出“No Solution”(不含引號(hào))。
樣例輸入
275.6 11.9 27.4 2.8 2
102.0 2.9
220.0 2.2
樣例輸出
26.95
思路:很明顯的一個(gè)貪心題目(ps:不知道dp能不能做)。
對(duì)于我們當(dāng)前的位置,我們很希望可以一下子跑到油價(jià)比當(dāng)前位置便宜的地方。如果不能的話,我們只能把當(dāng)前油箱裝滿,然后跑到下一個(gè)加油站,再重復(fù)這個(gè)操作。那么怎么找出油價(jià)比當(dāng)前位置便宜的地方呢?利用單調(diào)棧來(lái)實(shí)現(xiàn)這一步驟。然后去執(zhí)行上面的操作就可以了。
代碼如下:
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯][算法训练VIP]旅行家的预算(单调栈+贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux使用重启网卡命令的方法
- 下一篇: Orac and Medians Cod