qzezoj 1543 最快路線

2021-10-04 08:21:41 字數 3144 閱讀 3932

題面傳送門

看到這道題,想到spf

aspfa

spfa

。但這道題好像故意的,偏偏又路牌被拆的道路(在衢州的話負責那一段路的交警就該**了),

所以我們不能只以d

id_i

di​為tim

etime

time

的唯一標準。

想象一下:如果下一條路是沒有路牌的,而這時過來一條路,tim

etime

time

比d

id_i

di​大,但如果下一條路可以走得通怎麼辦?而且還走得比d

id_i

di​快。這時候就進退兩難,如果放過去,那spf

aspfa

spfa

就廢了。

如果不放過去,答案就廢了。

想想f ly

in

gflying

flying

經常說什麼?dpdp

dp狀態表達不完整就再加一維狀態!我們可以用dpdp

dp的思路:以di,

jd_

di,j

​表示以j

jj速度開到i

ii點所需最短時間。那麼spf

aspfa

spfa

還是照樣鬆弛唄。

這道題要求我們輸出經過點序,所以我們可以spf

aspfa

spfa

的過程中當出現乙個最優解時指回去。然後最後倒序輸出。

**實現:

#include

#include

using

namespace std;

int n,m,k,x,y,z,h,zj[

100039

],head,now1[

159]

[559

],now2[

159]

[559

],tmp1,tmp2;

double dp[

159]

[559

],ans;

struct yyyf[

159]

[159

],cur;

struct fstmp;

queue q;

intmain()

; q.

push

((fs));

for(i=

0;i<=

500;i++

) now1[0]

[i]=-1

,now2[0]

[i]=-1

;for

(i=0

;i<=

150;i++

) dp[0]

[70]=

0;while

(!q.

empty()

));}

}else);

}}}}

//printf("%d %d %d %d %d %d %d %d\n",now1[1][64],now2[1][64],now1[3][90],now2[3][90],now1[2][90],now2[2][90],now1[5][70],now2[5][70]);

ans=

1000000000

;for

(i=1

;i<=

550;i++

)for

(i=1

;i<=

550;i++

)for

(j=head;j>=

1;j--

)printf

(" %d"

,zj[j]);

printf

(" %d"

,k);}}

}

然而又要卡常…可能這道題有卡spf

aspfa

spfa

的資料吧…

加暫存器,手寫佇列…又是卡過去的…966ms

966ms

966m

s。本機都跑的飛快呀…

**實現:

#include

#include

using

namespace std;

int zj[

1039

],now1[

159]

[559

],now2[

159]

[559];

double dp[

159]

[559

],ans;

struct yyyf[

159]

[159];

struct fsq[

500039];

inline

void

read

(int

&x)int

main()

; q[

++ta]=(

(fs));

for(i=

0;i<=

500;i++

) now1[0]

[i]=-1

,now2[0]

[i]=-1

;for

(i=0

;i<=n;i++

) dp[0]

[70]=

0;while

(he!=ta));

}}else);

}}}}

//printf("%d %d %d %d %d %d %d %d\n",now1[1][64],now2[1][64],now1[3][90],now2[3][90],now1[2][90],now2[2][90],now1[5][70],now2[5][70]);

ans=

1000000000

;for

(i=1

;i<=

500;i++

)for

(i=1

;i<=

500;i++

)for

(j=head;j>=

1;j--

)printf

("%d "

,zj[j]);

printf

("%d "

,k);}}

}

qzezoj 1543 最快路線

題面傳送門 看到這道題,想到 spfa 但這道題好像故意的,偏偏又路牌被拆的道路 在衢州的話負責那一段路的交警就該 了 所以我們不能只以 d i 為 time 的唯一標準。想象一下 如果下一條路是沒有路牌的,而這時過來一條路,time 比 d i 大,但如果下一條路可以走得通怎麼辦?而且還走得比 d...

BZOJ 3245 最快路線

bzoj的source已經暴露了一切 直接上spfa,對於乙個點記錄到達它時的速度,然後進行轉移,基本上就是乙個分層圖的思路吧。因為要輸出方案,多開乙個陣列記錄就行了。include include include include include include using namespace st...

bzoj3245 最快路線

精明的小r每每開車出行總是喜歡走最快路線,而不是最短路線.很明顯,每條道路的限速是小r需要考慮的關鍵問題.不過有一些限速標誌丟失了,於是小r將不知道能開多快.不過有乙個合理的方法是進入這段道路時不改變速度行駛.你的任務就是計算從小r家 0號路口 到d號路口的最快路線.現在你得到了這個城市的地圖,這個...