點我\(dfs\)+記憶化
首先\(dfs\)一下求下面的點是不是能全被覆蓋到,打乙個標記
順便記憶化一下最後一排左右延伸能延伸到**
然後對於最後一排如果能流滿,那麼還有乙個性質,每個起點能覆蓋的最後一排是乙個連續段
這一點證明可以看洛谷部落格,簡單來說就是如果兩個起點的水流在某個點流到一起了,那順著分叉一定能流到另外一邊的
**細節實現上還是不夠熟練,裸的\(dfs\)寫的很多了,但是帶一點記憶化/剪枝的有時候就寫不出來,還是要多做題
#include#define n (1000 + 10)
using namespace std;
inline int read()
while (isdigit(c))
return cnt * f;
}int n, m, map[n][n], flow[n][n];
int l[n][n], r[n][n], cnt;
const int fx[4] = ;
const int fy[4] = ;
void dfs_(int d, int x, int y)
}int main()
int l = 1;
while (l <= m)
puts("1"); printf("%d", cnt);
return 0;
}
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列的矩形,如上圖所示,其中每個格仔都代表一座城 市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施 有兩種,分別為蓄水廠和輸...