NOIP2010 引水入城

2021-09-07 12:46:41 字數 929 閱讀 2020

模擬考試的時候因為前面的題耗時太嚴重,所以沒有寫

對於第一行的每乙個城市。我們能夠預處理出在這座城市建立蓄水廠,水流能到達最以下一行的哪些城市;假設終於的題目是有解的,那麼最後一行這些被覆蓋的城市是連續的。反證:假設水流到達最以下一行的城市是斷開不連續的,則說明中間有城市海拔比四周都高,其它城市過來的水流也流不上去。因此永遠無法被覆蓋。與我們之前的條件相矛盾。

預處理出來每做城市的覆蓋範圍後,這道題就變成這樣:給你長度為m的x軸,如今有m條線段,求覆蓋x軸至少要多少根線段。

我們既能夠用dp。也能夠用貪心,這裡採用dp

設,f[i]表示覆蓋1~i所須要的最少線段g[j]表示線段i覆蓋的區間

則 f(i) = min

#include#include#include#includeusing namespace std;

struct t

t(int a,int b) };

queuemyque;

int map[505][505];

bool p[505][505];

int n,m;

int dd[4][2] = ,,,};

void bfs()

while(!myque.empty()) }

}int cur;

int g[505][2],f[505];

void dfs(int x,int y)//找到每條線段的左右端點

for(int i = 0; i < 4; i++) }

int main()

printf("1\n");

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

for(int i = 1; i <= m; i++)//dp,最小線段覆蓋問題

printf("%d\n",f[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...

NOIP2010 引水入城

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

NOIP 2010 引水入城

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