bzoj 3170 松鼠聚會 旋轉座標

2021-07-07 05:34:05 字數 556 閱讀 5057

這道題大意是選定乙個點,使其它點到它的距離sigma(dis=max(x-x0,y-y0)) 最小。

做法是旋轉座標,橫縱座標分開統計每個點的答案,取最小值。

啟示:以前知道旋轉座標可以將dis=abs(x-x0)+abs(y-y0)的◇區域變成乙個dis=max(x-x0,y-y0)的正方形區域,這道題讓我知道了逆著做也是可以的。以後做座標+距離的題都多想一想旋轉座標吧。

問題:想到了之後,速敲了乙個中位數,最後發現讀錯題了,不是可以在任意一點聚會。

#include

#include

#include

#include

#include

#define md

#define ll long long

#define inf (int) 1e9

#define eps 1e-8

#define n 100010

using namespace std;

struct p p[n];

bool cmpx(p a,p b)

bzoj3170 松鼠聚會

這個距離就是切比雪夫距離,有乙個神奇的東西是說將 x,y 變成 x y,x y 然後就是曼哈頓距離,因此轉化後對x座標和y座標分別統計排序和求和 求字首和預處理 二分 1 include2 using namespace std 3 define n 100005 4struct jia n 7in...

BZOJ3170 Tjoi 2013 松鼠聚會

time limit 10 sec memory limit 128 mb submit 531 solved 249 submit status 有n個小松鼠,它們的家用乙個點x,y表示,兩個點的距離定義為 點 x,y 和它周圍的8個點即上下左右四個點和對角的四個點,距離為1。現在n個松鼠要走到乙...

bzoj3170 Tjoi 2013 松鼠聚會

有n個小松鼠,它們的家用乙個點x,y表示,兩個點的距離定義為 點 x,y 和它周圍的8個點即上下左右四個點和對角的四個點,距離為1。現在n個松鼠要走到乙個松鼠家去,求走過的最短距離。input 第一行給出數字n,表示有多少只小松鼠。0 n 10 5 下面n行,每行給出x,y表示其家的座標。10 9 ...