洛谷月賽 最後的狂歡 汽車拉力比賽

2021-07-06 04:07:31 字數 1490 閱讀 7566

題目描述

博艾市將要舉行一場汽車拉力比賽。

賽場凹凸不平,所以被描述為m*n的網格來表示海拔高度(1≤ m,n ≤500),每個單元格的海拔範圍在0到10^9之間。

其中一些單元格被定義為路標。組織者希望給整個路線指定乙個難度係數d,這樣參賽選手從任一路標到達別的路標所經過的路徑上相鄰單元格的海拔高度差不會大於d。也就是說這個難度係數d指的是保證所有路標相互可達的最小值。任一單元格和其東西南北四個方向上的單元格都是相鄰的。

輸入輸出格式

輸入格式:

第一行兩個整數m和n。第2行到第m+1行,每行n個整數描述海拔高度。第2+m行到第1+2m

行,每行n個整數,每個數非0即1,1表示該單元格是乙個路標。

輸出格式:

乙個整數,即賽道的難度係數d。

輸入輸出樣例

輸入樣例#1:

3 5

20 21 18 99 5

19 22 20 16 26

18 17 40 60 80

1 0 0 0 1

0 0 0 0 0

0 0 0 0 1

輸出樣例#1:

21因為懶就直接用洛谷生成的題目摘要了。。這道題spfa可以水90分。。我估計是資料弱。。那麼我們來討論正解吧!因為要滿足至少一條路標的連線路線的差值小於乙個t,我們可以列舉t來嘗試解決問題。高度t小於10^9,採用二分的思想+bfs驗證即可。

然後是我這個蒟蒻的**。。

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 550;

intmap[maxn][maxn];

bool done[maxn][maxn],use[maxn][maxn];

int min_,max_,tot=0;

bool dfs(int x,int y,int cnt)

if(abs(map[x][y]-map[x+1][y])<=max_&&done[x+1][y]==0)

if(abs(map[x][y]-map[x][y+1])<=max_&&done[x][y+1]==0)

if(abs(map[x][y]-map[x][y-1])<=max_&&done[x][y-1]==0)

}return

false;

}int main()

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

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

int mid=(min_+max_)>>1;

while(midint cnt=0;

if(dfs(x,y,0)==false) mid=(mid+max_)>>1;

else

}cout

0;}

洛谷月賽總結

include using namespace std char s 1000005 long double l,r,t,wsl,wsr,dr,dl,fu bool pd,big,lx,rx inline long long read int main if pd if ful strlen s i...

洛谷2018 6月賽

對於初中生來說簡直就是閱讀理解場,感覺之前自學的高中物理全白學了。t1 物理 平拋運動 題意概述 怎麼概述,我自己還沒完全看懂呢.事實上是個名副其實的簽到題。首先發現了一些公式,然後發現關鍵就是 t 只要有了 t 別的就都可以隨便算啦。這時候就發現乙個很奇妙的事情,v 好像給了兩種表示方法?於是就可...

洛谷月賽 禮物

題解 首先我們會發現題目限制等價於要同乙個組中的數不能再2進製下呈包含關係 然後可以建一張郵箱無圖,找最長鏈 我們考慮ai只有10 6 從大到小考慮,列舉刪掉每一位的連邊方法 複雜度20 10 6 這麼做的正確性是顯然的 因此從小到大插入每個數,貪心的放在前面這個正確性可以反證 include us...