這道題就是貪心
1、在第乙個加油站的時候,如果在加滿油能夠到達的加油站中有乙個加油站的錢比自己的少(其實等於也行),那就 加足夠到那個車站的油,直接去那個車站
2、這些車站中所有都比自己大,那就找乙個其中錢最少的車站 在當前車站加滿油,然後直接開到那個車站
3、然後到達車站時就不斷重複以上的處理方法
4、但這樣有乙個問題就是你無法到達最後乙個車站,於是我們把最後乙個車站的費用變為0(其實還是-1更保險)這樣就保證如果能到,就一定能走到最後乙個
車站5、那麼如何判斷能否到達呢?如果在一次加油站處理操作時,發現加滿油了仍然乙個車站都不能到達,那就不能到達了。
下面貼**,感覺自己寫的好醜啊
#include #include#include
#include
#include
using
namespace
std ;
struct
node;
double
d1,c,d2,you,w ;
double
ans ;
intn,x,k;
double
y,mi ;
node a[
1000011
] ;bool
f,ff ;
bool
cmp(node a,node b)
intmain()
sort(a+1,a+n+1
,cmp) ;
a[++n].wei =d1 ;
a[n].p = 0
; x = 0
;
while(xelse
x =i ;
ff = true
;
break
; }
if(a[i].pi ;
}if(ff) continue
;
if(!f)
ans = ans + (c-you) *a[x].p ;
you = c - (a[k].wei-a[x].wei) /d2 ;
x =k ;
}printf(
"%.2lf
",ans) ;
return0;
}
洛谷 P1016 旅行家的預算
原題鏈結 這是一道比較簡單的貪心題目。這個題的解法如下 如果把起點定為第0個加油站,終點定為第n 1個加油站。從第0個點開始,驅車至能到達的最遠的那個加油站,在第0個點把油加滿。這其中會遇到三種情況 1.中間有乙個比出發點油價更便宜的加油站。2.中間的油價都比出發點高。3.不能到達下乙個加油站。很容...
洛谷 P1016 旅行家的預算(貪心 模擬)
貪心的策略是 從起點 其中乙個加油站出發,所能到達的所有加油站中,如果有比當前加油站 便宜的,則從當前加油站加定量油正好跑到那個最近的 便宜的加油站 如果都比當前加油站貴,則加滿油並跑到 最低的乙個。再注意一些邊界條件的處理。ac 1 include2 include3 using namespac...
(貪心)P1016 旅行家的預算
應用 題庫訓練 比賽記錄討論 題目提供者ccf noi 評測方式雲端評測標籤noip提高組1999 難度普及 提高 時空限制1000ms 128mb 提交 題解 乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1d1 汽車油箱的容量cc 以公升為...