xdoj1269 2017新生賽現場賽G題

2021-08-15 20:06:32 字數 1712 閱讀 4700

時間限制: 1 sec  

記憶體限制: 128 mb

提交: 39  

解決: 12 [

提交][

狀態][

討論版]

williamchen 每天就知道玩遊戲,他最喜歡玩 the binding of issac。

有時候他會進入乙個充滿石頭的房間,有時候他需要控制以撒從這個房間的某個位置走到另乙個位置。

為了簡化問題,乙個房間被抽象成乙個二維矩陣(10*10),由下列符號組成。

s : 代表以撒現在所處的位置,地圖中只會出現乙個。

r : 代表地圖中的石頭,不能通過。

* : 代表地圖中的空地,可以通過。

e : 代表以撒想要去的目標位置,地圖上只能出現乙個。

b : 代表炸彈,地圖中只會出現乙個。

以撒不能通過石頭,也不能站在石頭上,他每一秒中只能向上下左右四個方向之一移動乙個距離。

炸彈的作用是,可以將上下左右的四塊石頭(如果有)全部清除,炸彈只能被放置在空地上。以撒現在沒有炸彈,他可能需要去撿乙個炸彈幫助他到達目的地或是讓他更快地到達目的地。撿這個炸彈或者放置炸彈都是不用耗費時間的。

以撒只能在自己的腳下放置炸彈,因為他已經撿到防爆道具,所以不需要擔心是否炸傷自己。請問以撒最快用幾秒能到達目的地,如果不能到達,請輸出-1。

包含乙個 10 * 10 的二維矩陣。

輸出乙個數,代表到達目的地的最短時間,或是-1 代表不能到達目的地。

**********

**********

**********

**********

**********

**********

**********

**********

rrrrrr****

****ers**b

8

思路:一道較為複雜的迷宮問題,用bfs求解,但狀態不只是點的座標,還有當前手中炸彈的數目。

見**:

#include #include #include using namespace std;

int sx,sy,ex,ey,zx,zy;

int ans=1000000000;

char map[20][20];

int gg[20][20]; //用來判定這個格是否可以走

int dx[4] = ;

int dy[4] = ;

struct node

; queueq;

bool judge(int x,int y)

void bfs()

for(i=0; i<4; i++)

else if(map[x1][y1]=='s'||map[x1][y1]=='e'||map[x1][y1]=='*')

else if(map[x1][y1]=='b')}}

}}int main()

for(i=0; i<10; i++)

}for(i=0; i<10; i++)

if(map[i][j]=='e')

if(map[i][j]=='b')}}

bfs();

if(ans==1000000000)

printf("-1\n");

else

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

return 0;

}

xdoj1276 2017新生賽現場賽C題

時間限制 1 sec 記憶體限制 128 mb 提交 22 解決 11 提交 狀態 討論版 第一行兩個數n,m 0 n,m 10 5 代表歌單裡的歌曲數目以及記錄的條目數。接下來m行,每行乙個數k 0 k n 代表這次williamchen聽到了第k首歌後停止。5 451 23432 11 思路 這...

xdoj1256 2017新生賽現場賽E題

時間限制 1 sec 記憶體限制 128 mb 提交 18 解決 12 提交 狀態 討論版 把小於 4000 的正整數轉換成相應的羅馬數字。羅馬數字共有7個,即 1 5 10 50 100 500 和 1000 按照下述的規則可以表示任意小於4000的正整數。重複數次 乙個羅馬數字重複幾次,就表示這...

新生賽心得

新生賽發揮正常,rank8。心情感受 比賽前 學長 們說送熱水袋開心剛好缺乙個熱水袋有了上次藍橋杯選拔賽爆零的經驗,這次真的就是想打完就跑最好那個熱水袋,總之就是很輕鬆。結果最後拿了rank8看到白書!好想要,但是被前面的人拿走了,後來上台的時候大概是acm女生太少了所以男生就比較起鬨我就懵了,隨便...