BZOJ 3007 拯救小雲公主 最短路徑

2021-08-13 16:41:10 字數 914 閱讀 7016

題目傳送門

題目大意:給定乙個矩形和矩形內一些點,求一條左上角到右下角的路徑,使所有點和矩形邊界到這條路徑的最小距離最大。

解法1:最小距離最大,想到二分,然後題目就轉化成:矩形內有一些圓形障礙,問左上角是否能到達右下角。直接bfs判斷即可。(話說這種圖好像叫對偶圖啊)

這種解法的優點就是比較好想,但是如果資料再大一點就會tle了,bzoj4219肯定是過不了的。

解法2:考慮兩點間距離,如果要通過這兩點,最小距離肯定為(x

i−xj

)2+(

yi−y

j)2−

−−−−

−−−−

−−−−

−−−−

√ ,那麼是不是可以增加左上角的點和右下角的點,做最小生成樹?當左上角和右下角聯通時,當前邊就是答案。

但是……很可惜,最小生成樹的做法會tle。

那麼是不是我們把kruskal換成spfa就好了呢?

事實證明,就是這麼做。

附上ac**:

#include 

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int n=3010;

int n,l,r,x[n],y[n];

double

map[n][n],dis[n];

bool b[n];

queue

que;

inline

void spfa(void)

}return;

}int main(void)

BZOJ 3007 拯救小雲公主

英雄又即將踏上拯救公主的道路 這次的拯救目標是 愛和正義的小雲公主。英雄來到boss的洞穴門口,他一下子就懵了,因為面前不只是乙隻boss,而是上千只boss。當英雄意識到自己還是等級1的時候,他明白這就是乙個不可能完成的任務。但他不死心,他在想,能不能避開boss去拯救公主呢,嘻嘻。boss的洞穴...

bzoj 3007 拯救小雲公主

description 英雄又即將踏上拯救公主的道路 這次的拯救目標是 愛和正義的小雲公主。英雄來到boss的洞穴門口,他一下子就懵了,因為面前不只是乙隻boss,而是上千只boss。當英雄意識到自己還是等級1的時候,他明白這就是乙個不可能完成的任務。但他不死心,他在想,能不能避開boss去拯救公主...

SDOI2012 拯救小雲公主

題目最大的最小最小的最大 一看就非常的二分 考慮二分之後轉化成判定聯通問題 於是可以考慮乳酪 直接維護聯通好像很 gg 正難則反考慮維護不連通 什麼時候不連通,發現當左上角和右下角分在兩個塊裡面就涼了 當上和右邊或上和下邊聯通的時候左上角和右下角被分割在兩塊 另外兩種情況同理 於是並查集仿照乳酪維護...