。。。我覺得這道題放在貪心裡應該不為過
原文:
題目測評——》
。。。自行放大。。。
題解:最開始的思路是全排列+搜尋,預估30分。正解是搜尋+dp,先對每個
靠近河岸的點搜一次,儲存下來這個點能夠覆蓋的區間,也就是能到達
的靠近沙漠的點,然後對於這些區間進行dp,找出覆蓋所有區間用的
最少的點。另外用乙個陣列儲存所有蓄水站能夠覆蓋到的點,來找到不能覆蓋完的情況。
搜尋部分是常規的dfs,dp部分定義d(i),表示覆蓋到i點的乙個狀態,遍歷j來尋找最優的重疊情況。
**:
#include#define maxa 700using namespace std;
bool vis[maxa][maxa];
int n,m,cnt,ok[maxa],map[maxa][maxa],d[maxa],left[maxa],right[maxa];
int drct[5][3]=,,,};
void dfs(int x,int y,int origin)
for(int i=0;i<=3;i++) }}
int main()
for(int i=1;i<=m;i++)
if(!ok[i])
cnt++;
if(cnt)
d[0]=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
printf("1\n");
printf("%d",d[m]);
}
題解 引水入城
luogu loj 從上向下記憶化搜尋,儲存每個點能覆蓋的最底層的區間。如果乙個點能到達的區間不連續,那麼一定沒有方案。然後做乙個基礎貪心 從n個區間中選出盡量少的區間,覆蓋1 n include include include define n 510 define ll long long de...
P1514 引水入城 DFS
在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個nn 行 times m m 列的矩形,如上圖所示,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄...
Codevs P1066 引水入城 BFS 貪心
題目描述 在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n 行m 列的矩形,如上圖所示,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄水廠和輸水...