2018湘潭大學 F maze

2021-08-19 16:52:37 字數 2206 閱讀 8818

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

題目描述

小明來到乙個由n x m個格仔組成的迷宮,有些格仔是陷阱,用'#'表示,小明進入陷阱就會死亡,'.'表示沒有陷阱。小明所在的位置用's'表示,目的地用't'表示。

小明只能向上下左右相鄰的格仔移動,每移動一次花費1秒。

有q個單向傳送陣,每個傳送陣各有乙個入口和乙個出口,入口和出口都在迷宮的格仔裡,當走到或被傳送到乙個有傳送陣入口的格仔時,小明可以選擇是否開啟傳送陣。如果開啟傳送陣,小明就會被傳送到出口對應的格仔裡,這個過程會花費3秒;如果不開啟傳送陣,將不會發生任何事情,小明可以繼續向上下左右四個方向移動。

乙個格仔可能既有多個入口,又有多個出口,小明可以選擇任意乙個入口開啟傳送陣。使用傳送陣是非常危險的,因為有的傳送陣的出口在陷阱裡,如果小明使用這樣的傳送陣,那他就會死亡。也有一些傳送陣的入口在陷阱裡,這樣的傳送陣是沒有用的,因為小明不能活著進入。請告訴小明活著到達目的地的最短時間。

輸入描述:

有多組資料。對於每組資料:

第一行有三個整數n,m,q(2≤ n,m≤300,0≤ q ≤ 1000)。

接下來是乙個n行m列的矩陣,表示迷宮。

最後q行,每行四個整數x1,y1,x2,y2(0≤x1,x2

< n,0≤ y1,y2

< m),表示乙個傳送陣的入口在x1

行y1列,出口在x2

行y2列。

輸出描述:

如果小明能夠活著到達目的地,則輸出最短時間,否則輸出-1。

示例1

輸入

5 5 1

..s..

.....

.###.

.....

..t..

1 2 3 3

5 5 1

..s..

.....

.###.

.....

..t..

3 3 1 2

5 5 1

s.#..

..#..

###..

.....

....t

0 1 0 2

4 4 2

s#.t

.#.#

.#.#

.#.#

0 0 0 3

2 0 2 2

輸出

68

-13題解:這道題用到bfs和優先佇列的知識,用到優先佇列是因為通過傳送門到達某點的步數和不通過傳送門,直接到達那一點的步數大小不能確定。所以要按照所走步數 從小到大在佇列中排序。----優先佇列

注意這題有乙個坑,每次要讓父節點的visit==1,不能每次標記子節點為1,因為有傳送們的情況,用傳送門到達a點,和不用傳送門到達a點都要入隊。這樣雖然有重複入隊的情況,但是保證了答案的正確性。

附ac**:

#include #include#include #include #include #include #define ll long long

using namespace std;

int n, m, p, v[320][320];

char ma[320][320];

struct node

} no, ne, st, en;

vectorch[305][305];

int dx[4] = ;

int dy[4] = ;

int judge(int x, int y)

int bfs()

for (int i = 0; i < ch[no.x][no.y].size(); i++)

}return -1;}

int main()

}for (int i = 0; i < n; i++)

for (int j = 0; j < m; j++)

int x1, x2, y1, y2;

for (int i = 0; i < p; i++)

printf("%d\n", bfs());

}return 0;

}

2023年湘潭大學程式設計競賽

a 時間統計 某個實驗需要統計時間,記錄了實驗開始和結束的時間,計算實驗用了多少秒。第一行輸入乙個整數n,表示樣例個數。接下來每組樣例兩行,表示開始時間和結束時間,格式為xdayhh mm ss,x是乙個整數表示第幾天,0 x 20000,hh表示小時,mm表示分鐘,ss表示秒,保證時間合法,結束時...

2018 湘潭大學 H統計顏色

題目描述 n個桶按順序排列,我們用1 n給桶標號。有兩種操作 1 l r c 區間 l,r 中的每個桶中都放入乙個顏色為c的球 1 l,r n,l r,0 c 60 2 l r 查詢區間 l,r 的桶中有多少種不同顏色的球 1 l,r n,l r 輸入描述 有多組資料,對於每組資料 第一行有兩個整數...

2018湘潭大學程式設計競賽 B

題意 給你乙個字母矩陣,和測試組數,讓你統計字串的字元累計出現的次數,然後讓你找出需要找的字元,這個字元必須是每行每列裡出現次數最多的。題解 暴力瞎搞。map列舉一下啊。寫的十分暴力,絕對不是最優解。qaq。題好難讀,看了好久才懂樣例。1 include2 include 3 include4 in...