★★★ 輸入檔案:flow.in
輸出檔案:flow.out
簡單對比
時間限制:1 s
記憶體限制:128 mb
在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n行m列的矩形,如上圖所示,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。
為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄水廠和輸水站。蓄水廠的功能是利用水幫浦將湖泊中的水抽取到所在城市的蓄水池中。因此,只有與湖泊毗鄰的第1行的城市可以建造蓄水廠。而輸水站的功能則是通過輸水管線利用高度落差,將湖水從高處向低處輸送。故一座城市能建造輸水站的前提,是存在比它海拔更高且擁有公共邊的相鄰城市,已經建有水利設施。
由於第n行的城市靠近沙漠,是該國的乾旱區,所以要求其中的每座城市都建有水利設施。那麼,這個要求能否滿足呢?如果能,請計算最少建造幾個蓄水廠;如果不能,求乾旱區中不可能建有水利設施的城市數目。
輸入檔名為flow.in。輸入檔案的每行中兩個數之間用乙個空格隔開。
輸入的第一行是兩個正整數n和m,表示矩形的規模。
接下來n行,每行m個正整數,依次代表每座城市的海拔高度。
輸出檔名為flow.out。
輸出有兩行。如果能滿足要求,輸出的第一行是整數1,第二行是乙個整數,代表最少建造幾個蓄水廠;如果不能滿足要求,輸出的第一行是整數0,第二行是乙個整數,代表有幾座乾旱區中的城市不可能建有水利設施。
flow.in
2 5
9 1 5 4 3
8 7 6 1 2
flow.out
1 1
【樣例1說明】
只需要在海拔為9的那座城市中建造蓄水廠,即可滿足要求。
flow.in
3 6
8 4 5 6 4 4
7 3 4 3 3 3
3 2 2 1 1 2
flow.out
1 3
【樣例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。
bfs||dfs+線段覆蓋
仔細想一下可以發現,每乙個臨海點對應的沙漠點集一定為一條線段,然後就可以用線段覆蓋的貪心解決。
1 #include2 #include3 #include4**極醜,求輕噴。using
namespace
std;
5 inline int max_(int x,int y)
6const
int maxn=1e3;
7int
n,m,ok,now,ans;
8int
a,b,head,tail;
9int
map[maxn][maxn];
10struct nates[maxn];
11bool
v[maxn][maxn],d[maxn],f[maxn];
12int
ox,oy,nx,ny;
13int bx=;
14int by=;
15bool comp(const nate&x,const nate&y)
16struct nataq[maxn*maxn];
17void bfs(int x,int
y);21 v[x][y]=1;22
while(head>tail);
31 v[nx][ny]=1;32
}33}34
}35}36
intmain()
52if(s[now].l) now++;53}
54}55for(int i=1;i<=m;i++) if(f[i]) ++ok;
56if(ok==m)
63 printf("
1\n%d\n
",ans);64}
65else printf("
0\n%d\n
",m-ok);
66return0;
67 }
貪心掛了好多好多次,我真的弱的不行。。。
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列的矩形,如上圖所示,其中每個格仔都代表一座城 市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施 有兩種,分別為蓄水廠和輸...