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