現在,你作為一名新星鵬洛客,找到了一塊絕佳的修煉地。這塊地方可以被描述成乙個 n x m 的矩形。你已經在這塊地中的一些位置打好了標記。接下去,就該對整塊地賦予你的顏色了。乙個位置能被賦予你的顏色,當且僅當滿足以下條件之一:
1. 這個位置被打上了標記。
2. 這個位置在不經過被打標記的位置的情況下與邊界不連通(這個圖是四聯通的)。換句話說,如果你從這個位置開始,在不經過被打標記的位置,且只能向上下左右四個方向移動的情況下永遠不能走到地圖的邊界,那麼這個位置符合條件。
現在,你的好**想知道,你能為多少個位置賦予你自己的顏色呢?
第一行包含兩個正整數 n, m ,表示地圖的長和寬。
接下去 n 行,每行乙個長為 m 的字串,表示地圖的一行。
其中 表示該位置未被打標記; 表示該位置被打了標記。
保證地圖僅由 和 構成。
輸出僅一行,包含乙個整數,表示你的答案。
示例1
複製
4 4
....
.###
.#.#
.###
複製
9
可以被賦予顏色的位置在下圖中用
1 ≤ n x m ≤ 106
題意就是上面內個(不好懂是吧) hh
題意大概就是讓你把一塊不與外面聯通的區域(這塊區域被『#』包圍)或「#」格塗色,問塗得塊數個數
如果從正面考慮的話得從這塊不與外面聯通的區域裡的『.』開始搜 ,判斷是否與外面聯通,但其實可以直接從圖四周邊界搜不是「#」的塊比如『 . 』和 被『 # 』包圍的『.』聯通區域(因為被被『 # 』包圍的『.』不會被搜到(自己想一下))標記成其他字元 如 @,最後在跑一邊圖把不是@的塊數累加即為結果。
-------->注意得用vector存圖 ,陣列不夠(我就是不會vector存圖,沒做出來....今天才學的vector存圖,補的題)
**如下:
#include#include#include#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1000000;
vectore[maxn];
int dx=;
int dy=;
int n,m;
bool judge(int x,int y)
void dfs(int x,int y)
} }int main()
判斷是否能往下搜的條件,我是從反面考慮的,剛開始沒注意到(沒這個條件e[x][y]=='@')當經過某點「 . 」改為『 @ 』後,其他點搜是再經過此點是會一直搜,死遞迴...
如果不考慮那麼多的話 直接 :
bool judge(int x,int y)
牛客練習賽31 A題 地 顏色 魔法
紅色 於山脈,象徵著狂躁 憤怒 混亂,血雨腥風,電光火石。藍色 於海島,象徵著控制 幻覺 詭計,運籌帷幄,謀定後動。綠色 於樹林,象徵著生命 蠻力 成長,橫衝直撞,生生不息。黑色 於沼澤,象徵著死亡 貪婪 腐敗,追求卓越,不計代價。白色 於平原,象徵著秩序 公平 正義,攜手共進,穩中求勝。現在,你作...
牛客演算法周周練19 E 地 顏色 魔法 BFS
題目鏈結 題意 給定乙個由 組成的n m1 n m 106 1 n m 106 1 n m 106網格,其中被 包圍的全部可以變成 問你最後有多少個 和原題描述有點差別 不過就是這意思 思路 處理每乙個網格顯然很難判斷,我們直接逆向思維,把和邊界相連的 bfs標記一下即可。然後沒有被標記的就是最後答...
荒漠治理的「綠色魔法師」
眾所周知,樹木吸收二氧化碳提供人類呼吸所需的氧氣,防風固沙,涵養水土,是自然環境的重要基礎。然而土地荒漠化的問題日益嚴峻,碳排放過多導致的海平面公升高 溫室效應等氣候問fyzuzawi題威脅著人類的健康和安全。現階段要加快荒漠恢復的過程,大規模機械人集群參與的種樹方案是乙個理想的選擇。植樹視窗期非常...