我的演算法題 藍橋杯校選題

2021-10-02 10:37:37 字數 1481 閱讀 6762

注意!:之前演算法太菜了,後面有時間更改

小明用積木搭了乙個城堡。

為了方便,小明在搭的時候用的是一樣大小的正方體積本,搭在了乙個 n 行 m 列的方格圖上,每個積木正好佔據方格圖的乙個小方格。

當然,小明的城堡並不是平面的,而是立體的。小明可以將積木壘在別的積木上面。當乙個方格上的積木壘得比較高時,就是乙個高塔,當乙個方格上沒有積木時,就是一塊平地。

小明的城堡可以用每個方格上壘的積木層數來表示。例如,下面就表示乙個城堡。

9 3 3 1

3 3 3 0

0 0 0 0

這個城堡南面和東面都有空地,西北面有乙個大房子,在西北角還有乙個高塔,東北角有乙個車庫。

現在,格格巫要來破壞小明的城堡,他施了魔法水淹小明的城堡。

如果水的高度為1,則緊貼地面的那些積木要被水淹,在上面的例子中,有7塊積木要被水淹。

如果水的高度為2,則更多積木要被水淹,在上面的例子中,有13塊積木要被水淹。

給定小明的城堡圖,請問,水的高度依次為1, 2, 3, …, h 時,有多少塊積木要被水淹。

輸入格式

輸入的第一行包含兩個整數 n, m。

接下來 n 行,每行 m 個整數,表示小明的城堡中每個位置積木的層數。

接下來包含乙個整數 h,表示水高度的上限。

輸出格式

輸出 h 行,每行乙個整數。第 i 的整數表示水的高度為 i 時被水淹的積木數量。

樣例輸入

3 49 3 3 1

3 3 3 0

0 0 0 0

10樣例輸出713

1920

2122

2324

2525

評測用例規模與約定

對於 40% 的評測用例,1 <= n, m <= 100,1 <= h <= 100,積木層數不超過100;

對於 70% 的評測用例,1 <= n, m <= 1000,1 <= h <= 1000,積木層數不超過1000;

對於所有評測用例,1 <= n, m <= 1000,1 <= h <= 100000,積木層數不超過1000000000。

思路:建立二維陣列,用相應的積木數填滿二維陣列,判斷不同水位下積木數大於等於1的方格數,並在水位上公升時將所有方格數大於等於1的減去一格,再次重複判斷。就例題而言:

9 3 3 1

3 3 3 0

0 0 0 0 當前水位為1,被淹沒的積木數為7

水位為2時:

8 2 2 0

2 2 2 0

0 0 0 0 新增6,被淹數字7+6=13

水位為3時:

7 1 1 0

1 1 1 0

0 0 0 0,被淹數為19.。。。

以下是我的**

#

include

using namespace std;

intmain()

}}cout<}}

藍橋杯演算法訓練題集

algo 1 區間k大數查詢 include include include include include using namespace std int a 1005 int tmp 1005 int ans 1005 bool cmp int a,int b int maxsort int l...

關於藍橋杯15屆校賽第四題

最近幾天忙著看指標和陣列的關係,把書翻了起來,不翻不要緊,一翻嚇一跳,本以為網上資源那麼豐富,不需要去翻書本,然而並不是這樣,網上講的很片面,書上的細節很多,需要靜下心來去慢慢啃。前幾天校園網故障,一直上不去網,於是也就無法寫部落格了,昨天來網了,而昨天又是藍橋杯校賽,於是就耽擱了寫部落格,最主要也...

藍橋杯 演算法訓練 星際交流(水題)

演算法訓練 星際交流 時間限制 1.0s 記憶體限制 256.0mb 問題描述 人類終於登上了火星的土地並且見到了神秘的火星人。人類和火星人都無法理解對方的語言,但是我們的科學家發明了一種用數字交流的方法。這種交流方法是這樣 的,首先,火星人把乙個非常大的數字告訴人類科學家,科學家破解這個數字的含義...