NOIP2010 T4 引水入城

2021-07-22 16:40:49 字數 1203 閱讀 8807

寬搜+貪心

還是挺容易的

對第一行的每乙個點進行搜尋,統計最後一行每個點的到達情況

然後記錄下該點可到達的最左端和最右端的位置

判斷最後一行的到達情況,統計不可到達的點,如果不為

0 就輸出,退出程式

否則就是做最少線段覆蓋問題

可以證明第一行的每乙個點可到達最後一行的位置是連續的(我證不來)

問題就變成了完全覆蓋1到

m 最少要幾條線段

把線段以頭為主要關鍵字從小到大,尾為次要關鍵字從大到小排序

設當前線段可覆蓋1到

x ,我們要找的下一條線段是頭在1到

x 中,尾最大的線段,直到全部覆蓋為止 vi

jos上

1a了,然而落谷上

t 了乙個點,所以加個優化,當第一行某個點不低於左右倆個點時才搜尋

#include

#include

#include

#include

#define g getchar()

#define ll long long

#define inf 0x3f3f3f3f

using

namespace

std;

inline ll read()

inline

void out(ll x)

struct res[505],dui[505*505];

int n,m,a[505][505],tou,wei,ans,now,nx;

bool mp[505][505],pd[505];

int ox[5]=,oy[5]=;

inline

bool cmp(re x,re y);

memset(mp,0,sizeof(mp));mp[1][i]=1;

for(;tou<=wei;++tou);}}

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

}for(int i=1;i<=m;++i)ans+=pd[i];

if(ans0),out(m-ans);return

0;} sort(s+1,s+1+m,cmp);

now=1;nx=0;ans=0;

for(;now<=m;)

out(1),out(ans);

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列的矩形,如上圖所示,其中每個格仔都代表一座城 市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施 有兩種,分別為蓄水廠和輸...