洛谷P1016 旅行家的預算 貪心

2022-08-05 04:30:24 字數 1202 閱讀 1985

這道題就是貪心

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 以公升為...