這題。。。
以前打的,很暴力的bfs:
#include
#include
using namespace std;
int a[
502]
[502
],ll[
502]
,rr[
502]
,data[
300001][
2];bool bz[
502]
[502];
int temp,n,m;
const
int way[5]
[2]=
;void
bfs(
int x,
int y)}}
}voiddg(
int x,
int y)}}
for(i=
1;i<=m;i++)}
intmain()
if(n==1)
else
if(k>0)
else
i=1;
k=0;
while
(i<=m)
i=k+1;
ans++;}
printf
("1\n%d\n"
,ans);}
}
這題其實可以貪心的。
因為不難發現,第一層要選的有乙個條件:
因為這樣才算優嘛。
然後就是乙個性質了:
思考一下,為什麼呢?
好了,就說到這裡了,自己在想想吧。
上標:
#include
#include
#define min(x,y) x=x#define max(x,y) x=x>y ? x:y
using namespace std;
int a[
501]
[501
],l[
501]
,r[501
],n,m,ans,fr;
bool bz[
501]
[501
],c[
501]
;inline
intread()
voiddg(
int x,
int y)
if(y>
1&& a[x]
[y]>a[x]
[y-1]&&
!bz[x]
[y-1])
dg(x,y-1)
;if(y[y]>a[x]
[y+1]&&
!bz[x]
[y+1])
dg(x,y+1)
;if(x>
1&& a[x]
[y]>a[x-1]
[y]&&
!bz[x-1]
[y])
dg(x-
1,y);if
(x[y]>a[x+1]
[y]&&
!bz[x+1]
[y])
dg(x+
1,y);}
intmain()
for(
int i=
1;i<=m;i++
) ans+=(
!c[i]);
if(ans)
return0&
printf
("0\n%d\n"
,ans)
;for
(int i=
1,x=
0;i<=m;i=x+
1,ans++
)for
(int j=
1;j<=m;j++)if
(l[j]
<=i && r[j]
>=x) x=r[j]
;printf
("1\n%d\n"
,ans)
;return0;
}
NOIP2010提高組 引水入城(BFS)
問題描述 在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n 行m 列的矩形,如上圖所示,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄水廠和輸水...
引水入城 noip2010
題目描述 description 在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政 區劃十分特殊,剛好構成乙個n行m列的矩形,如上圖所示,其中每個格仔都代表一座城 市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施 ...
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...