(貪心)P1016 旅行家的預算

2021-09-11 11:48:38 字數 2696 閱讀 1924

應用 題庫訓練

比賽記錄討論

題目提供者ccf_noi

評測方式雲端評測標籤noip提高組1999

難度普及+/提高

時空限制1000ms / 128mb

提交 題解

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離d1d1、汽車油箱的容量cc(以公升為單位)、每公升汽油能行駛的距離d2d2、出發點每公升汽油**pp和沿途油站數nn(nn可以為零),油站ii離出發點的距離didi、每公升汽油**pipi(i=1,2,…,ni=1,2,…,n)。計算結果四捨五入至小數點後兩位。如果無法到達目的地,則輸出「no solution」。

輸入格式:

第一行,d1d1,cc,d2d2,pp,nn。

接下來有nn行。

第i+1i+1行,兩個數字,油站i離出發點的距離didi和每公升汽油**pipi。

輸出格式:

所需最小費用,計算結果四捨五入至小數點後兩位。如果無法到達目的地,則輸出「no solution」。

輸入樣例#1:複製

275.6 11.9 27.4 2.8 2

102.0 2.9

220.0 2.2

輸出樣例#1:複製

26.95
n \le 6n≤6,其餘數字\le 500≤500

題解:1>. 當從st(當前位置)起的 d 的範圍內,存在比當前的油錢小的,那麼,填的油要剛好到達這個位置

2>. 當從st(當前位置)起的 d 的範圍內,不存在比當前的油錢小的,那麼,首先找到範圍內最小油錢的位置(minn),此時要發揮st位置處油的全部作用,即在給位置將油箱全部填滿,將當前位置st變成找到的minn位置。

主要樣例:

100    50   1   1    2

30    1.5

50    2.0

輸出 : 135.00

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps (1e-8)

#define max 0x3f3f3f3f

#define u_max 1844674407370955161

#define l_max 9223372036854775807

#define i_max 2147483647

#define re register

#define pushup() tree[rt]=tree[rt<<1]+tree[rt<<1|1]

#define nth(k,n) nth_element(a,a+k,a+n); // 將 第k大的放在k位

#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 約瑟夫

#define ok() v.erase(unique(v.begin(),v.end()),v.end()) // 排序,離散化

using namespace std;

inline int read()

while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}typedef long long ll;

const double pi = atan(1.)*4.;

const int inf = 0x3f3f3f3f;

const ll inf = 0x3f3f3f3f3f3f3f3fll;

const int m=63;

const int n=5e5+5;

double d1,c,d2,p,x[25],y[25];

int n;

struct funf[100];

bool cmp(fun a,fun b)

sort(f+1,f+n+1,cmp);

int leap=0;

double ans=0,st=0,cut=0,d=c*d2;

// ans最終結果 st當前位置 cut油箱當前剩餘油量 d範圍大小

while(true)}}

if(!num)

else

}if(minn<=p)

else

else}}

if(leap)

printf("no solution\n");

else

printf("%.2lf\n",ans);

return 0;

}

P1016 旅行家的預算 貪心

題目鏈結 一道貪心題,為使油費最小,則我們就必須盡可能的在油價低的地方加油。在不加油的情況下,汽車可行駛的最大距離為c d2,記為max d,所以到達乙個車站後加的油可影響的範圍在後面距離當前加油站小於等於max d的加油站,為使油費最少,我們不能浪費一分錢。如果在max d內有油價低於當前加油站時...

P1016 旅行家的預算 貪心

p1016 旅行家的預算 貪心求,在當前點如果能到達距離最近的油價比他小的就直接去油價比他小的,如果在可行範圍內沒有比他油價小的,就加滿開到可行範圍內油價最小的點 這麼做是對的,我不會證明 還有就是,如果變數定義在外面了,在for迴圈裡面就不要定義了,這個點卡了我一下午 一直停止執行 include...

P1016 旅行家的預算

乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1d1 汽車油箱的容量cc 以公升為單位 每公升汽油能行駛的距離d2d2 出發點每公升汽油 pp和沿途油站數nn nn可以為零 油站ii離出發點的距離didi 每公升汽油 pipi i 1,2,ni...