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的父節點,...