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,份。另外,他還有另外 份萬能材料,每乙份萬能材料都能作為任意一種原材料的乙...