模擬考試的時候因為前面的題耗時太嚴重,所以沒有寫
對於第一行的每乙個城市。我們能夠預處理出在這座城市建立蓄水廠,水流能到達最以下一行的哪些城市;假設終於的題目是有解的,那麼最後一行這些被覆蓋的城市是連續的。反證:假設水流到達最以下一行的城市是斷開不連續的,則說明中間有城市海拔比四周都高,其它城市過來的水流也流不上去。因此永遠無法被覆蓋。與我們之前的條件相矛盾。
預處理出來每做城市的覆蓋範圍後,這道題就變成這樣:給你長度為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列的矩形,如上圖所示,其中每個格仔都代表一座城 市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施 有兩種,分別為蓄水廠和輸...