你要的原題哦!
題意:
原題說的很明白,並不難理解,就是上面的點可以順高度梯度擴充套件到下面的點。一種情況是最後一行的點無法被完全訪問,此時是求最後一行的無法被訪問的點的個數,另一種情況是最後一行的點可以被完全覆蓋,而此時就換做求在第一行選擇擴充套件點的最小個數。
題析:其實我並不是今天才遇到這道題,剛碰到這道題時,我猶豫了許久,但最後還是沒敢去碰。但實際上,這道題雖說初次做是有一點困難(dalao勿噴!),但在搞懂了這道題的實際做法時,你又會恍然大悟,它其實並不如你想象中的那麼複雜(就如一牛說言:這道題即沒用高階的結構又沒用高階的演算法,何談複雜)。
引入的話還是不寫了,既然這道題看起來有點雜亂,那我們就要用劃分子問題(
?)的方法,一步步搞倒這道題。那就按題目說要求的來做,首先,我們需要考慮如何去求最後一行點的問題。而對於求乙個點是否可以被訪問的一系列問題,我們想到的,最簡單的演算法,那就是搜尋,所以我們為何不可以乾脆將第一行的點的水閘全部放開,讓它們自由地輸水,而我們只需要列舉一遍最後一行的訪問情況,直接下定論就可以了,此處最多的搜尋情況為500*500=25000,以bfs+判重陣列即可輕鬆搞定,也不知是不是就是網上所說的灌水法。
還剩下乙個求最小用點的問題,對於這個問題,我就不能提太多了,網上一般的解法是把第一行的每個點在最後一行能覆蓋的區間
(注意,此處的覆蓋點為什麼呈乙個連續區間,需要一定證明)看做乙個線段,緊接著就是線段覆蓋問題
來證明區間問題:文庫1
解題報告,最後用了比較常規的方式證明了區間問題,清晰易懂:文庫2
此題所聯絡的線段覆蓋問題,以及其它線段覆蓋系列的問題,沒看過的同學可以看一下,這一類問題還是別具特色的,這裡丟了乙個部落格,當然也可以自己另外再發掘:線段覆蓋
當然還有各類大牛的部落格值得一看,在此不再一一枚舉。
**:最後貼上醜陋的**,請多各牛多多包涵~
#include#include#include#include#include#define inf 0x3f3f3f3f
using namespace std;
const int n=500+5;
struct line
};struct point;
// 行列擴充套件陣列
int dh[5]=;
int dl[5]=;
// 題目資料
int n,m;
int het[n][n];
// line a[n]; // 記錄第一行每個點在最後一行的覆蓋區間(線段)
bool vis[n][n]; // 訪問記錄陣列
queueq; // bfs佇列
//void bfs(){
while( !q.empty() ){
point point=q.front();
q.pop(); // 取點
int h=point.h,l=point.l; // 用h,l簡化表示
for(int i=1;i<=4;i++)
if ( h+dh[i]<=n && h+dh[i]>=0 && l+dl[i]<=m && l+dl[i]>=0 && het[h+dh[i]][l+dl[i]]>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>het[i][j]; // 讀入資料
int wans=judge(); // 記錄最後一行不可能被訪問點個數
if ( wans==0 ){ // 都可以被訪問,即不存在不可能被訪問的點
int ans=work(); // 尋找訪問最優解
cout<<"1"<<"\n"<
抬頭一看時間居然是
2:33,果然寫部落格實在是給力啊。
一月已經過去~
2017.2.1
Codevs P1066 引水入城 BFS 貪心
題目描述 在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n 行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...
VIJOS P1777引水入城
描述 在乙個遙遠的國度,一側是風景秀美的湖泊,另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊,剛好構成乙個n行m列的矩形,其中每個格仔都代表一座城市,每座城市都有乙個海拔高度。為了使居民們都盡可能飲用到清澈的湖水,現在要在某些城市建造水利設施。水利設施有兩種,分別為蓄水廠和輸水站。蓄水廠的功能是利...