地 顏色 魔法

2021-09-01 04:29:16 字數 1551 閱讀 1013

現在,你作為一名新星鵬洛客,找到了一塊絕佳的修煉地。這塊地方可以被描述成乙個 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題威脅著人類的健康和安全。現階段要加快荒漠恢復的過程,大規模機械人集群參與的種樹方案是乙個理想的選擇。植樹視窗期非常...