牛客練習賽31 A題 地 顏色 魔法

2021-09-01 08:52:31 字數 1884 閱讀 9616

紅色**於山脈,象徵著狂躁、憤怒、混亂,血雨腥風,電光火石。

藍色**於海島,象徵著控制、幻覺、詭計,運籌帷幄,謀定後動。

綠色**於樹林,象徵著生命、蠻力、成長,橫衝直撞,生生不息。

黑色**於沼澤,象徵著死亡、貪婪、腐敗,追求卓越,不計代價。

白色**於平原,象徵著秩序、公平、正義,攜手共進,穩中求勝。

現在,你作為一名新星鵬洛客,找到了一塊絕佳的修煉地。這塊地方可以被描述成乙個 n x m 的矩形。你已經在這塊地中的一些位置打好了標記。接下去,就該對整塊地賦予你的顏色了。乙個位置能被賦予你的顏色,當且僅當滿足以下條件之一:

1. 這個位置被打上了標記。

2. 這個位置在不經過被打標記的位置的情況下與邊界不連通(這個圖是四聯通的)。換句話說,如果你從這個位置開始,在不經過被打標記的位置,且只能向上下左右四個方向移動的情況下永遠不能走到地圖的邊界,那麼這個位置符合條件。

現在,你的好**想知道,你能為多少個位置賦予你自己的顏色呢?

第一行包含兩個正整數 n, m ,表示地圖的長和寬。

接下去 n 行,每行乙個長為 m 的字串,表示地圖的一行。

其中  表示該位置未被打標記; 表示該位置被打了標記。

保證地圖僅由  和  構成。

輸出僅一行,包含乙個整數,表示你的答案。
示例1複製

4 4

....

.###

.#.#

.###

複製

9
可以被賦予顏色的位置在下圖中用

1 ≤ n x m ≤ 106
從邊界點開始往裡深搜,每走到乙個點對該點進行加1,最後統計哪些點沒有進行加1,則是答案。特別注意的是,資料量太大,可以把輸入資料的每一行當作乙個char陣列,並將每一行每乙個字元做標記後存進vector容器陣列裡,直接對vector陣列進行搜尋、標記和統計。

**:

#includeusing namespace std;

const int maxn = 1e6 + 10;

const int dx = ;

const int dy = ;

vectormp[maxn];//資料量太大,則用vector容器代替二維陣列

int n, m;

int tot = 0;

void init()

bool judge(int i, int j)

void dfs(int i, int j)

}int main()

}for(int i = 0; i < n; i++)

}for(int i = 0; i < n; i++)

for(int j = 0; j < m; j++)

if(mp[i][j] > 1)tot++;//大於1的點,表示由邊界出發可以走到的點,也就是可以到達邊界的點

printf("%d\n", n*m-tot);

} return 0;

}

牛客練習賽40A題

題目描述 作為這命運劇場永遠的觀眾,小d一直注視著這片星光璀璨的舞台,舞台上,少女們的身姿演繹出了一幕幕動人的場景,令人回味無窮。有的時候,小d也會自己寫一些歌曲,來加入starlight的劇本,使得劇本充滿了新的生命力。現在小d又要準備寫樂譜了,小d寫譜的方式比較獨特。他會先寫出乙個按照音符出現順...

牛客練習賽65水題

powered by ab in 局外人 純模擬題。mod 998244353 n int input s list map int input split s.sort if n 1 lst s n 2 1 tmp s n 2 1 ans 1for i in tmp ans ans i mod p...

牛客題集 練習賽76

前段時間發現牛客這些比賽質量挺高的,打算寒假期間補一補 a直接列舉每個小組對遊戲的了解程度,然後每個人從前到後連著組隊,如果當前隊伍了解程度剛好等於列舉的了解值,說明能夠組成一隊,後面的人再自行一一組隊,否則,當前列舉值不符合條件。include define debug freopen r.txt...