2018藍橋杯省賽B組 9 全球變暖

2021-09-13 03:57:03 字數 1698 閱讀 1802

你有一張某海域nxn畫素的**,".「表示海洋、」#"表示陸地,如下所示:

….##…

.##…

…##.

…####.

…###.

…其中"上下左右"四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。

由於全球變暖導致了海面上公升,科學家**未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰(上下左右四個相鄰畫素中有海洋),它就會被淹沒。

例如上圖中的海域未來會變成如下樣子:……

………#……

…請你計算:依照科學家的**,**中有多少島嶼會被完全淹沒。

【輸入格式】

第一行包含乙個整數n。 (1 <= n <= 1000)

以下n行n列代表一張海域**。

**保證第1行、第1列、第n行、第n列的畫素都是海洋。

【輸出格式】

乙個整數表示答案。

【輸入樣例】7…

.##…

.##…

…##.

…####.

…###.

…【輸出樣例】

1資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

此題不能用深搜查連通塊數,因為1000*1000很大,用深蒐會爆棧。

用廣搜就不會爆棧,因為最大棧為連通塊最大一步的數量。

廣搜出開始島的數量,並分別標記島嶼號。

水位**更新地圖。

列舉地圖上的島嶼,並標記已存在島嶼,排除重複島嶼,求得實際剩餘島嶼數量。

沉沒島嶼數=開始島嶼數-實際剩餘島嶼數。

提交**,等待著綠色的降臨。

#include

#include

#include

using namespace std;

int n,sum=0;

char map[

1005][

1005];

int mark[

1005][

1005]=

;int mark2[

1000005]=

;int dir[4]

[2]=

,,,}

;struct node

;void

bfs(

int x,

int y)}}

intcover

(int x,

int y)

}return flag;

}int

main()

for(

int i=

0; i}for

(int i=

0; i}int sum2=0;

for(

int i=

0; i}printf

("%d"

,sum-sum2)

;return0;

}

2018藍橋杯省賽C C B組 全球變暖

題目大意你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它...

2018 藍橋杯省賽 B 組模擬賽(一)

給你乙個序列,請你在其中求出一段最長嚴格上公升的部分,它不一定要連續。include includeusing namespace std int f 10000 b 10000 int lis int n res max res,f i return res 1 int main printf d...

2023年藍橋杯省賽B組 明碼

2018年藍橋杯省賽b組 明碼 題目就不複製了,大概就是,給了你10行資料,每行32個數。要求將這些資料轉化成二進位制,即明碼,每一行資料排列成16 16,即可以看到乙個漢字。其實excel也可以做,但是數字需要自己敲上去就有點麻煩 include inter int n 轉換成二進位制 intb ...