NOIP2010 引水入城

2022-05-21 07:25:35 字數 2167 閱讀 6742

在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n行m列的矩形,如上圖所示,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。

為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄水廠和輸水站。蓄水廠的功能是利用水幫浦將湖泊中的水抽取

到所在城市的蓄水池中。因此,只有與湖泊毗鄰的第1行的城市可以建造蓄水廠。而輸水站的功能則是通過輸水管線利用高度落差,將湖水從高處向低處輸送。故一

座城市能建造輸水站的前提,是存在比它海拔更高且擁有公共邊的相鄰城市,已經建有水利設施。

由於第n行的城市靠近沙漠,是該國的乾旱區,所以要求其中的每座城市都建有水利設施。那麼,這個要求能否滿足呢?如果能,請計算最少建造幾個蓄水廠;如果不能,求乾旱區中不可能建有水利設施的城市數目。

輸入的第一行是兩個正整數n和m,表示矩形的規模。

接下來n行,每行m個正整數,依次代表每座城市的海拔高度。

輸出有兩行。如果能滿足要求,輸出的第一行是整數1,第二行是乙個整數,代表最少建造幾個蓄水廠;如果不能滿足要求,輸出的第一行是整數0,第二行是乙個整數,代表有幾座乾旱區中的城市不可能建有水利設施。

輸入樣例1:

2 5

9 1 5 4 3

8 7 6 1 2

輸入樣例2:

3 6

8 4 5 6 4 4

7 3 4 3 3 3

3 2 2 1 1 2

輸出樣例1:

1 1

輸出樣例2: 1 3

【樣例1說明】

只需要在海拔為9的那座城市中建造蓄水廠,即可滿足要求。

【樣例2說明】

湖泊 8 4 5 6 4 4

7 3 4 3 3 3

3 2 2 1 1 2

沙漠 上圖中,在3個粗線框出的城市中建造蓄水廠,可以滿足要求。以這3個蓄水廠為源頭在乾旱區中建造的輸水站分別用3種顏色標出。當然,建造方法可能不唯一。

【資料範圍】

本題共有10個測試資料,每個資料的範圍如下表所示:

測試資料編號能否滿足要求n m

1不能 n≤10 m ≤ 10

2不能 n≤100m≤ 100

3不能 n≤500 m≤ 500

4能 n= 1 m≤ 10

5能 n≤10 m ≤ 10

6能 n≤100 m≤ 20

7能 n≤100 m≤ 50

8能 n≤100 m≤100

9能 n≤200 m≤ 200

10能n≤500 m≤ 500

對於所有的10個資料,每座城市的海拔高度都不超過10^6。

題解:這個題目,我們首先要發現乙個性質,及對於乙個頂層的點,他的水流可覆蓋的點是乙個區間,對於乙個點如果處於水源區間的中間,

那麼其他的水源地就一定也覆蓋不了,這個很好理解,自己yy一下水中的小島就理解了,然後我們可以預處理出每個水源所覆蓋的

區間,當然暴力dfs會tle,所以,我們可以用一下記憶化,然後貪心選區間就可以了,具體不好解釋,看我**:

#include#include#include#include#includeusing namespace std;

int hi[501][501];

struct quejiana[510][510];

int n,m,addx[5]=,addy[5]=;

bool bb[501],b[501][501];

void cl()

quejian dfs(int y,int x)

for(int i=1;i<=4;i++)

b[y][x]=1;

a[y][x].l=l,a[y][x].r=r;

return a[y][x];}

bool check()

} if(flag) return 1;

printf("0\n");

printf("%d\n",num);

return 0;}

void kanxun()

now=nowr+1;

num++;

} printf("1\n");

printf("%d\n",num);}

int main()

return 0;

}

NOIP2010 引水入城

兩遍bfs floodfill,第一遍bfs可以判斷出最後是輸出0還是輸出1,第二遍bfs floodfill不懂 program flow const dx array 1.4 of 1.1 1,0,1,0 dy array 1.4 of 1.1 0,1,0,1 type atp record x...

NOIP2010 引水入城

4引水入城在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n 行m 列的矩形,如上圖所示,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄水廠和輸水...

NOIP 2010 引水入城

題目描述 在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政 區劃十分特殊,剛好構成乙個n行m列的矩形,如上圖所示,其中每個格仔都代表一座城 市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施 有兩種,分別為蓄水廠和輸...