3170 Tjoi 2013 松鼠聚會

2021-08-05 20:09:13 字數 727 閱讀 3863

題目鏈結

題目大意:給定平面上的n個點,求這n個點中的乙個點,使其到這n個點的切比雪夫距離之和最小

題解:根據結論:把座標系旋轉45°

曼哈頓距離轉化成切比雪夫距離,把點(x

,y) 變成(x

+y,x

−y) ,這樣新點之間的切比雪夫距離就是原點之間的曼哈頓距離

同理可以把切比雪夫距離轉化成曼哈頓距離,把點(x

,y) 變成((

x+y)

/2,(

x−y)

/2)

轉換成曼哈頓距離就可以橫縱座標分開算了

我的收穫:旋轉座標系

#include 

#include

#include

#include

using

namespace

std;

#define m 100100

#define x first

#define y second

int n,x,y,pos;

long

long ax[m],ay[m],sx[m],sy[m],ans=1ll<<61;

pairlong,long

long> point[m];

void work()

cout

<2

int main()

3170 Tjoi 2013 松鼠聚會

給定n個點,找到乙個點使這個點到其他所有點的切比雪夫距離之和最小。我們知道切比雪夫距離和曼哈頓距離的轉化公式 1 表示切比雪夫距離,2 表示曼哈頓距離 我們有 x 1 x 2 y 2,y 1 x 2 y 2 x 2 frac,y 2 frac 所以現在轉化成曼哈頓距離了 所以我們直接列舉點即可 什麼...

3170 Tjoi 2013 松鼠聚會

對乙個點 x,y 定義x x y,y x y,曼哈頓距離就可以寫成max x1 x2 y1 y2 回到原題,容易發現,兩個點 x1,y1 和 x2,y2 的距離為max x1 x2 y1 y2 把上面的處理倒過來,就可以回到我們熟悉的曼哈頓距離了。把點轉換後列舉每個點,然後o 1 求出它到所有點的曼...

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個松鼠要走到乙...