NC23486 小A與小B 雙向廣搜

2021-10-06 19:40:35 字數 1392 閱讀 4937

題解:這個題屬於走迷宮型別問題的乙個公升級版吧,不同之處在於一秒鐘小a走一步,小b可以走兩步,這兩種事件是同時發生的,所以我們每秒鐘讓a擴散一步,讓b擴散兩步。

兩個人走過的路徑分別用

visited[0][maxn][maxn]

visited[1][maxn][maxn]

來進行表示。

小a走的時候

1.檢查自己的地圖(防止重複走乙個地方)

2.檢查小b的地圖,看看小b是否走過這個地方(如果小b走過了,那就可以視為他們相遇了)

同理可得:

小b走的時候

1.檢查自己的地圖(防止重複走乙個地方)

2.檢查小a的地圖,看看小a是否走過這個地方(如果小a走過了,那就可以視為他們相遇了)

對於廣搜,因為是兩個點開始擴散,所以可以開乙個

queue q[2]

;

用0表示小a,1表示小b

本題還要注意一下讀入的問題,細節比較多一些。

/*keep on going never give up*/

#pragma gcc optimize(3,"ofast","inline")

#include

const

int maxn =

1010

;const

int maxn =

0x3f3f3f3f

;const

int minn =

0xc0c0c00c

;typedef

long

long ll;

const

int mod =

100000000

;using

namespace std;

int dx[8]

=;int dy[8]

=;bool visited[2]

[maxn]

[maxn]

;char maps[maxn]

[maxn]

;int n,m;

struct wazxy};

queue q[2]

;bool

bfs(

int x)}}

return

false;}

intmin_steps()

return-1

;}intmain()

if(maps[i]

[j]==

'd')}}

int ans=

min_steps()

;if(ans==-1

) cout<<

"no"

return0;

}

頻寬計算方法 及 大B與小b 說明

在電腦科學中,bit是表示資訊的最小單位,叫做二進位制位 一般用0和1表示。byte叫做位元組,由8個位 8bit 組成乙個位元組 1byte 用於表示計算機中的乙個字元。bit與byte之間可以進行換算,其換算關係為 1byte 8bit 或簡寫為 1b 8b 在實際應用中一般用簡稱,即1bit簡...

頻寬計算方法 及 大B與小b 說明

在電腦科學中,bit是表示資訊的最小單位,叫做二進位制位 一般用0和1表示。byte叫做位元組,由8個位 8bit 組成乙個位元組 1byte 用於表示計算機中的乙個字元。bit與byte之間可以進行換算,其換算關係為 1byte 8bit 或簡寫為 1b 8b 在實際應用中一般用簡稱,即1bit簡...

頻寬計算方法 及 大B與小b 說明

在電腦科學中,bit是表示資訊的最小單位,叫做二進位制位 一般用0和1表示。byte叫做位元組,由8個位 8bit 組成乙個位元組 1byte 用於表示計算機中的乙個字元。bit與byte之間可以進行換算,其換算關係為 1byte 8bit 或簡寫為 1b 8b 在實際應用中一般用簡稱,即1bit簡...