problem g: 逃脫
time limit: 1 sec memory limit: 32 mb
submit: 341 solved: 36
[submit][status][web board]
description
這是mengxiang000和tabris來到幼兒園的第四天,幼兒園老師在值班的時候突然發現幼兒園某處發生火災,而且火勢蔓延極快,老師在第一時間就發出了警報,位於幼兒園某處的mengxiang000和tabris聽到了火災警報聲的同時拔腿就跑,不知道兩人是否能夠逃脫險境?
幼兒園可以看成是乙個n*m的圖,在圖中一共包含以下幾種元素:
「.」:表示這是一塊空地,是可以隨意穿梭的。
「#」:表示這是一塊牆,是不可以走到這上邊來的,但是可以被火燒毀。
「s」:表示mengxiang000和tabris所在位子。
「e」:表示幼兒園的出口。
「*」表示火災發源地(保證輸入只有乙個火災發源地)。
已知每秒有火的地方都會向周圍八個格仔(上下左右、左上、右上、左下、右下)蔓延火勢.mengxiang000和tabris每秒都可以選擇周圍四個格仔(上下左右)進行移動。(假設兩人這一秒行動完之後,火勢才蔓延開)
根據已知條件,判斷兩人能否成功逃脫險境,如果可以,輸出最短逃離時間,否則輸出t_t。
input
第一行輸入乙個整數t,表示一共的測試資料組數。
第二行輸入兩個整數n,m,表示幼兒園的大小。
接下來n行,每行m個字元,表示此格仔是什麼元素。
t<=200
3<=n<=30
3<=m<=30
保證圖中有乙個起點,乙個出口,乙個火災源處.
output
每組資料輸出一行,如果兩人能夠成功到達出口,那麼輸出最短逃離時間,否則輸出t_t
sample input
3 5 5
*….
…..
..s#.
…e.
…..
5 5
…#*
..#s#
…##
….e
…..
5 5
…..
s….
..*#.
…e.
…..
sample output
2 t_t
t_t
hint
為了防止孩子們嬉戲中受傷,牆體是橡膠製作的,可以燃燒的哦。
題解:搜尋題,本來搜尋學的不好,加上比賽時出的人又少就沒看。現在補上。我們先預處理出火到每乙個點的時間,然後bfs人。判斷點是否滿足條件即可。有乙個坑點,當人和火同時到門的時候,算人勝利(很明顯啊!)
**:
#include
#define ll long long
using
namespace
std;
char mp[50][50];
int fx[10]= ;
int fy[10]= ;
int t,n,m;
int x,y;
int x2,y2;
int x3,y3;
bool flag;
int tim[50][50];
int vis[50][50];
int ans[50][50];
struct node
p;void bfs1(int x,int y)
); while(!q.empty()));}
}}
}void bfs2(int x,int y)
); while(!q.empty())
}if(mp[xx][yy]=='e')
return ;}}
}}
}int main()
if(mp[i][j]=='*')
if(mp[i][j]=='e')}}
bfs1(x2,y2);
bfs2(x,y);
if(flag)
printf("%d\n",ans[x3][y3]);
else
printf("t_t\n");
}}
動態規劃 Problem G
動態規劃 problem g 題意 都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑...
Problem G 貨幣兌換
problem g 貨幣兌換 time limit 1 sec memory limit 2 mb submit 14369 solved 6327 submit status web board description 給出人民幣對美元 歐元 日元的當日匯率,求給定金額的人民幣能兌換成外幣的金額,...
地牢逃脫 BFS
題意 給定乙個 n 行 m 列的地牢,其中 表示可以通行的位置,x 表示不可通行的障礙,牛牛從 x0 y0 位置出發,遍歷這個地牢,和一般的遊戲所不同的是,他每一步只能按照一些指定的步長遍歷地牢,要求每一步都不可以超過地牢的邊界,也不能到達障礙上。地牢的出口可能在任意某個可以通行的位置上。牛牛想知道...