題目傳送門
題目大意:給定乙個矩形和矩形內一些點,求一條左上角到右下角的路徑,使所有點和矩形邊界到這條路徑的最小距離最大。
解法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 正難則反考慮維護不連通 什麼時候不連通,發現當左上角和右下角分在兩個塊裡面就涼了 當上和右邊或上和下邊聯通的時候左上角和右下角被分割在兩塊 另外兩種情況同理 於是並查集仿照乳酪維護...