BJTU 1729 Ryan的彈幕遊戲(BFS)

2021-07-11 11:51:57 字數 1685 閱讀 6962

time limit: 1000 ms    memory limit: 65535 kb

total submission: 8   accepted: 3

ryan最近迷上了彈幕遊戲。所謂彈幕遊戲,指的是玩家操控一位角色對來襲的大量敵人進行攻擊,並在過程中公升級、強化自我的能力,最終打敗boss的一類遊戲。

「控制著主人公在槍林彈雨中穿行而不中彈的感覺真是太爽了!」——ryan

作為乙個資深彈幕遊戲玩家,ryan現在已經不再執著於不中彈,了,而是把目光轉移到了所謂的「擦彈」這種高階遊戲方式上。

「擦彈」是指玩家緊靠子彈而又不中彈的行為。如圖所示。

圖中「*」表示子彈,「.」表示空位。主人公每次可以往上下左右方向移動一格。按照箭頭的走法,就可以擦到紫色的子彈,擦彈數量為4。

注意,乙個子彈即使被擦彈多次,但只會被計1次。

現在ryan面前有一些固定不動的子彈,他想知道在不中彈的前提下,最大的擦彈數是多少。

輸入資料有多組,第一行是資料組數t(t≤50)。每組資料的第一行為兩個整數n和m,表示螢幕的規格是n*m(n行m列)。第二行為兩個整數x和y,表示主人公起始點在x行y列。接下來n行是乙個n*m的矩陣,僅由"*"和"."組成(1 <= n, m <= 500, 1 <= x <= n, 1 <= y <= m)。保證起始點一定沒有子彈,即矩陣的(x,y)處一定為"."。

對每組資料在單獨的一行中輸出結果,格式為「case #k: result」 (冒號後有空格),表示第k組資料對應主人公最大的擦彈數量為result

4 44 3

3 52 3

3 32 2

case 1: 4

case 2: 6

case 3: 4

ryan

解題思路:校賽的時候做這道題並沒有意識到是bfs搜尋,也可能因為對於深搜更熟練一些,上去直接就敲了dfs結果就悲劇了,各種tle+rte。。。當時內心真是崩潰的 =v= 後來才從學長那裡了解到,如果拿dfs寫會爆棧,但當時讓我掛了的主要原因可能還是我選擇用cin讀取資料,今天補題的時候才發現cin對這種搜尋的影響是非常大,不過好詫異之前做的那些題居然都過了……還是自己做的太少了,對這些套路了解不夠。。解決了這些問題,就是乙個簡單的bfs搜尋問題了。。

**:

#include #include #include using namespace std;

char map[505][505];

//int res[500][500];

int dx[4] = ;

int dy[4] = ;

int m,n;

struct point

;queuep;

int bfs( point s )

else if(map[x][y]=='.')}}

}return num;

}int main()

/*for(j=1;j<=n;j++)

cout << endl;

}*//*if(num_k <= 2)

*/map[x][y] = '@';

point s;

s.x = x;

s.y = y;

printf("case %d: %d\n",i,bfs(s));

}//cout << "hello world!" << endl;

return 0;

}

ZCMU1729 C queue的應用 貪心

輸入包含多組測試資料。每組測試資料的第一行有三個正整數m,t,r 1 m,t,r 300 第二行有m個整數wi 1 wi 300 代表每個鬼出現的時間。所有的wi都不相同並且從小到大排序。對於每組測試資料,輸出一行,如果可以滿足條件則輸出最少需要的蠟燭數,否則輸出 1 1 8 3 10 2 10 1...

BJTU1820 懶羊羊的作業

看過國產動畫片的同學都知道,懶羊羊是乙隻非常懶的羊,整天除了吃就是睡,根本沒有時間做作業。明天就是周一了,村長慢羊羊留的作業 把 n 個整數從大到小排序,它還沒開始寫,真是一件讓羊悲傷的事呀。但是,懶羊羊又是乙隻相當 機智 的羊,它發現村長年紀大了,這麼多作業根本判不過來,只會檢查作業的開頭和結尾。...

BJTU1923 憨中憨的幽蘭拿鐵

3000ms 256mb 鐵憨憨騎士團團長憨中憨有著特殊的能力來激發騎士的鬥志 他會泡好喝的幽蘭拿鐵,一杯幽蘭拿鐵能激發一位騎士的鬥志。製作一杯拿鐵需要 種原材料,每種原材料各需要 1,2,份,憨中憨現有每種原材料各?1,2,份。另外,他還有另外 份萬能材料,每乙份萬能材料都能作為任意一種原材料的乙...