【題目描述】
特種兵麥克接到命令要求營救被
敵軍俘虜的大兵瑞恩。瑞恩被關押在乙個迷宮裡,迷宮地形複雜,但幸好麥克得到了迷宮的
地形圖。
迷宮的外形是乙個長方形,其南北方向被劃分為n行,東西方向被劃分為m列,
於是整個迷宮被劃分為n×m個單元。每乙個單元的位置可用乙個有序數對(單元的行號,
單元的列號)來表示。南北或東西方向相鄰的2個單元之間可能互通,也可能有一扇鎖著的
門,或者是一堵不可逾越的牆。迷宮中有一些單元存放著鑰匙,並且所有的門被分成p類,
開啟同一類的門的鑰匙相同,不同類門的鑰匙不同。
大兵瑞恩被關押在迷宮的東南角,即(n,m)單元裡,並已經昏迷。迷宮只有乙個入口,
在西北角。也就是說,麥克可以直接進入(1,1)單元。另外,麥克從乙個單元移動到另乙個
相鄰單元的時間為1,拿取所在單元的鑰匙的時間以及用鑰匙開門的時間可忽略不計。
試設計乙個演算法,幫助麥克以最快的方式到達瑞恩所在單元,營救大兵瑞恩。
【輸入描述】
第1行有3個整數,分別表示n、m、p的值;
第2行是1個整數k,表示迷宮中門和牆的總數。第i+2 行(1 <= i <= k),有5個整數,依次為
xi1、yi1、xi2、yi2、gi,
當gi >= 1時,表示(xi1,yi1)單元與(xi2,yi2)單元之間有一扇第gi類的門,當gi=0 時,
表示(xi1,yi1)單元與(xi2,yi2)單元之間有一堵不可逾越的牆(其中,|xi1-xi2|+|yi1-yi2| = 1,
0 <= gi <= p)。
第k+3行是乙個整數s,表示迷宮中存放的鑰匙總數。
第k+3+j行(1 <= j <= s),有3個整數,依次為xi1、yi1、qi,表示第j把鑰匙存放在(xi1,yi1)
單元裡,並且第j把鑰匙是用來開啟第qi類門的(1 <= qi <= p)。
輸入資料中同一行各相鄰整數之間用乙個空格分隔。
【輸出描述】
將麥克營救到大兵瑞恩的最短時間的值輸出。如果問題無解,則輸出-1。
【樣例輸入】
4 4 9
91 2 1 3 2
1 2 2 2 0
2 1 2 2 0
2 1 3 1 0
2 3 3 3 0
2 4 3 4 1
3 2 3 3 0
3 3 4 3 0
4 3 4 4 0
22 1 2
4 2 1
【樣例輸出】
14
拯救大兵瑞恩
1944 年,特種兵麥克接到國防部的命令,要求立即趕赴太平洋上的乙個孤島,營救被敵軍俘虜的大兵瑞恩。瑞恩被關押在乙個迷宮裡,迷宮地形複雜,但幸好麥克得到了迷宮的地形圖。迷宮的外形是乙個長方形,其南北方向被劃分為 n 行,東西方向被劃分為 m 列,於是整個迷宮被劃分為 n m 個單元。每乙個單元的位置...
AcWing1131 拯救大兵瑞恩(最短路)
這題主要問題是有些地方有鑰匙,這種型別我們之前在bfs種做到過,就是用狀壓dp多列舉一維鑰匙就行了,因為鑰匙不需要時間,所以每次走到取完鑰匙肯定是最優的 本題是二維的,不過轉成一維更方便。我們的dis陣列原先記錄的是點,現在記錄的是點和狀態。建圖是,先建門,將門與牆都插入乙個set便於查詢 建完這兩...
尺有所短,寸有所長 邁瑞 凱恩帝
今天去面邁瑞,等待期間,幾同學在狂貶低邁瑞和凱恩帝的技術含量,還有專利等問題。其實,邁瑞和凱恩帝做的事情在國外看來確實沒太多技術含量,現在還做不了高階產品。但是,至少他們一直在努力,而且,在一窮二白的基礎上取得了初步的成果。比起絕大多數中國企業,他們是值得驕傲的。更不用說比起某些 想想晚清和 時期的...