題面傳送門
看到這道題,想到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號路口的最快路線.現在你得到了這個城市的地圖,這個...