codevs 3634 積水 優先佇列

2021-08-30 11:04:24 字數 1108 閱讀 7760

題目描述 description

有這樣一塊土地,它可以被劃分n*m個正方形小塊,每塊面積是一平方英吋,第i行第j列的小塊可以表示成p(i,j)。這塊土地高低不平,每一小塊地p(i,j)都有自己的高度h(i,j)(單位是英吋)。

一場傾盆大雨後,由於這塊地地勢高低不同,許多低窪地方都積存了不少降水。假如你已經知道這塊土地的詳細資訊,你能求出它最多能積存多少立方英吋的降水麼?

輸入描述 input description

輸入檔案的第一行是兩個正整數n和m,1<=n<=100,1<=m<=100,表示土地的尺寸。下面n行,每行m個整數(1…10000);第j行第i個數表示第j行第i列立方體的高。

輸出描述 output description

輸出檔案只有乙個數,表示在這個建築上可以聚合的積水的最大值

樣例輸入 sample input

3 63 3 4 4 4 2

3 1 3 2 1 4

7 3 1 6 4 1

樣例輸出 sample output

5這題要記住,外界是不能存水的,所以邊界的水一定會流出去。根據這個性質—木桶效應,水會在邊界的最低處流出去,所以整個池的最高高度就是最低的邊界。然後水從最低的邊界流進去,遇到比自己更低的就更新高度,且加入佇列,否則就直接加入佇列啥都不幹。因為每次我們都首先取最低的高度,所以水會不斷的更新方格,當元素取到高於最低邊界的格仔的時候,周圍的比它低的格仔已經全部被更新完了,所以這樣做答案肯定是對的。因為每次抽取最低積水格仔,所以佇列我們用優先佇列。

第一次寫flood fill,感覺良好

#include#include#include#include#include#define front top

using namespace std;

struct node

;const int dy=;

int main()

); }

} }while(!q.empty())

vis[xx+dx[i]][yy+dy[i]]=true;

q.push((node));

}} }

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

cout<}

c 實驗3 6 3 查詢子串

6 3 查詢子串 20 分 本題要求實現乙個字串查詢的簡單函式。函式介面定義 char search char s,char t 函式search在字串s中查詢子串t,返回子串t在s中的首位址。若未找到,則返回null。裁判測試程式樣例 include define maxs 30 char sea...

大洋蛋,過節咯 倒數363

大洋蛋 今天是中秋節,節日快樂.可是沒有月亮額.今天一整天都在下雨。跟我的心情一樣.很灰暗.因為我昨天晚上知道了,丫頭將要去合肥工作。你要乙個人去合肥了.有擔心,擔心丫頭乙個人在合肥會不會照顧自己.記不記得要按時吃飯,你的胃子不好。你悶的時候會不會有個人陪你說說話.還會不會有人保護著你。有不捨,不捨...

旋轉方塊矩陣p363

給定乙個方塊矩陣,請把該矩陣調整成順時針旋轉90 之後的樣子,要求額外空間複雜度為 o 1 思路 拿上圖舉例,首先選取矩陣四個角上的點 1,3,9,7 按順時針的方向 1 到 3 的位置 1 3 3 9 9 7 7 1 這樣對於旋轉後的矩陣而言,這四個點已經調整好了。接下來只需調整 2,6,8,4 ...