傳送門:洛谷p2243
初步判斷,是道最短路的題.
首先就是建圖了,對於電路板上的每一對角線,令與讀入方向相同的路徑邊權為0,方向相反的邊權為1.
由於只能走斜線,根據網格圖的性質可知橫縱座標之和為奇數的點是到不了的,預設起點為(0,
0)(0, 0)
(0,0
),對此,可以去掉一半的邊(根本就到不了),同時也可以直接判斷無解的情況
跑圖的話,dijkstra + heap,和經過優化的spfa(關於spfa,他$ \cdots $)應該是能過的,但由於邊權只有0和1,所以只要考慮用雙端佇列的bfs,即可(類似於spfa的slf優化), 若邊權為1,則將其放入隊尾,否則置於隊首,要注意的是,乙個點可能多次入隊
#include
#include
#include
#include
#define il inline
using
namespace std;
il int
read()
int to[
502005
], nxt[
502005
], val[
502005];
int last[
251005];
int cnt;
il void
add(
int u,
int v,
int w)
int s, t;
int n, m;
int dis[
251005];
il int
turn
(int x,
int y)
il void
bfs(
int u)
for(
;!q.
empty()
;)if(
!val[i]
) q.
push_front
(v);
else q.
push_back
(v);}}
}int
main()
if((n + m)&1
) s =
1; t =
turn
(n, m)
;bfs
(s);
}return0;
}
AcWing 175 電路維修(雙端佇列BFS)
我們可以把電路板上的每個格點 橫線與豎線的交叉點 看作無向圖中的節點。若兩個節點 x xx 和 y yy 是某個小方格的兩個對角,則在 x xx 與 y yy 之間連邊。若該方格中的標準件 對角線 與 x xx 到 y yy 的線段重合,則邊權為 0 00 若垂直相交,則邊權為 1 11 說明需要旋...
電路維修 (廣搜變形 雙端佇列)
題目 這道題做法挺多的,洛谷上有好多,但是都需要將該迷宮轉換為一張圖,即對於一條邊,其對角線的點相互到達需要幾次旋轉,若該邊為 則左上角到右下角可以不用旋轉邊直接到達,而左下角到右上角則需要一次旋轉,故可將該兩點間邊權置為1,將圖建立起來。接下來可以有兩種做法,堆優化最短路跑,廣搜。這裡說一下廣搜 ...
175 電路維修 bfs
達達是來自異世界的魔女,她在漫無目的地四處漂流的時候,遇到了善良的少女翰翰,從而被收留在地球上。翰翰的家裡有一輛飛行車。有一天飛行車的電路板突然出現了故障,導致無法啟動。電路板的整體結構是乙個r行c列的網格 r,c 500 如下圖所示。電路.png 每個格點都是電線的接點,每個格仔都包含乙個電子元件...