題目鏈結在此
其實我看到這道題一點想法都沒有
設f[i][j][k]表示用2i秒能不能從j走到k。如果可以,那j到k就可以一秒走到,它們的路徑長度就是1。方程為f[i][j][k]=f[i-1][j][l]&&f[i-1][l][k]。
最後在圖上跑一遍floyd。複雜度o(n3)。
**如下
#include#include#include
#include
inline
long
long
read()
while
(isdigit(ch))
return num*f;
}bool f[65][55][55
];int map[55][55
];int q[1000000
],h,t;
intmain()
for(int i=1;i<=64;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k)
for(int l=1;l<=n;++l)
if(f[i-1][j][k]&&f[i-1
][k][l])
f[i][j][l]=map[j][l]=1
;
for(int j=1;j<=n;++j)
for(int i=1;i<=n;++i)
for(int k=1;k<=n;++k)
if(map[i][j]+map[j][k]map[j][k];
printf("%d
",map[1
][n]);
return0;
}
洛谷1613跑路(倍增)
題目描述 description 小a的工作不僅繁瑣,更有苛刻的規定,要求小a每天早上在6 00之前到達公司,否則這個月工資清零。可是小a偏偏又有賴床的壞毛病。於是為了保住自己的工資,小a買了乙個十分牛b的空間跑路器,每秒鐘可以跑2 k千公尺 k是任意數 當然,這個機器是用longint存的,所以總...
luogu1613 跑路(倍增)
題目 我是超連結 題解 乙個spfa版本的。看看這個2 k就知道是倍增,一開始想用類似求lca的方法,但是發現這樣乙個遠度的只能連乙個點 只有乙個爸爸 但其實可以連到好多點,我們考慮用floyd,f l i j 表示走2 l i可以走到j,那讀入就是f 0 i j 然後求最短路就ok了。可以用flo...
洛谷 1613 跑路 倍增
題目描述 小a的工作不僅繁瑣,更有苛刻的規定,要求小a每天早上在6 00 6 00 6 00 之前到達公司,否則這個月工資清零。可是小a偏偏又有賴床的壞毛病。於是為了保住自己的工資,小a買了乙個十分牛b的空間跑路器,每秒鐘可以跑2 k2 k 2k千公尺 k是任意自然數 當然,這個機器是用lon gi...