NOIP2010提高組 引水入城

2021-09-09 07:48:03 字數 1983 閱讀 8855

這題。。。

以前打的,很暴力的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...