2014 9 27模擬賽 柵欄迷宮

2021-06-26 00:07:07 字數 1677 閱讀 8931

1、柵欄迷宮

田野上搭建了乙個**大神專用的柵欄圍成的迷宮。幸運的是,在迷宮的邊界上留出了兩段柵欄作為迷宮的出口。更幸運的是,所建造的迷宮是乙個「完美的」迷宮:即你能從迷宮中的任意一點找到一條走出迷宮的路。給定迷宮的寬w(1<=w<=38)及長h(1<=h<=100)。 2*h+1行,每行2*w+1的字元以下面給出的格式表示乙個迷宮。然後計算從迷宮中最「糟糕」的那乙個點走出迷宮所需的步數(就是從最「糟糕」的一點,走出迷宮的最少步數)。(即使從這一點以最優的方式走向最靠近的出口,它仍然需要最多的步數)當然了,**大神讓你必須只會水平或垂直地在x或y軸上移動,你不能從來不走對角線。每移動到乙個新的方格算作一步(包括移出迷宮的那一步)這是乙個w=5,h=3的迷宮:

+-+-+-+-+-+
|         |
+-+ +-+ + +
|     | | |
+ +-+-+ + +
| |     |
+-+ +-+-+-+
如上圖的例子,柵欄的柱子只出現在奇數行或奇數列。每個迷宮只有兩個出口。

program name: maze

input format:

(file maze.in)

第一行: w和h(用空格隔開)
第二行至第2*h+1行:  每行2*w+1個字元表示迷宮
output format:

(file maze.out)

輸出乙個單獨的整數,表示能保證牛從迷宮中任意一點走出迷宮的最小步數。
5 3
+-+-+-+-+-+
|         |
+-+ +-+ + +
|     | | |
+ +-+-+ + +
| |     |
+-+ +-+-+-+

9
善良的學長:樣例輸入可以複製進記事本或者文字文件這樣看起來更加直觀!!!=v=

廣搜簽到題……難度為負……就是讀入的處理討厭了點

考場上預處理沒搞好才90……一定是因為昨晚打cf太遲今天沒睡醒

#include#include#includeusing namespace std;

#define n 100000

const int mx[5]=;

const int my[5]=;

int n,m,t,w,ma;

char ch;

int mrk[210][210];

bool link[210][210][5];

int dist[210][210];

int qx[n],qy[n];

inline void bfs() }}

int main()

if(i%2==0&&j%2!=0)

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

for (int i=1;i<=n;i++)

for (int i=1;i<=m;i++)

for (int i=1;i<=m;i++)

bfs();

printf("%d",ma);

}

NOIP模擬題 柵欄

題目大意 給定乙個 n times m 的網格圖,每次會選擇一塊矩形沿著網格線鋪上柵欄,或者拆除之前鋪的柵欄,或者詢問兩個格仔能否不經過柵欄直接到達。保證柵欄沒有重疊或交叉,刪去的柵欄刪除前一定存在。題解考慮兩個格仔能互相到達,當且僅當包含它們的柵欄完全相同。考慮對每乙個柵欄隨機乙個權值,維護覆蓋每...

2020去世模擬賽2 Freda的迷宮

freda是乙個迷宮愛好者,她利用業餘時間建造了許多迷宮。每個迷宮都是由若干房間和走廊構成的,每條走廊都連線著兩個不同的房間,兩個房間之間最多只有一條走廊直接相連,走廊都是雙向通過。黃昏時候,freda喜歡在迷宮當中漫步。每天,resodo都會為freda設計乙個挑戰方案。resodo會指定起點和終...

《省賽模擬賽補》

c題 比賽的時候已經想到了統計最底層的每個序列的出現次數,但是一開始想的是建圖之後dfs處理,但是發現很難處理出來。其實正確的思路是拓撲排序去處理次數。我們在最後建圖完成之後,倒著從n回去拓撲即可。但是這裡有個坑點,就是一開始統計入度可能是不正確的。例如 3 1 2 4 1 2 3是1,2的父節點,...