3170 Tjoi 2013 松鼠聚會

2022-02-27 11:43:34 字數 604 閱讀 5351

給定n個點,找到乙個點使這個點到其他所有點的切比雪夫距離之和最小。

我們知道切比雪夫距離和曼哈頓距離的轉化公式

\(1\)表示切比雪夫距離,\(2\)表示曼哈頓距離

我們有:

\(x_1 = x_2 - y_2,y_1 = x_2 + y_2\)

\(x_2 = \frac,y_2 = \frac\)

所以現在轉化成曼哈頓距離了

所以我們直接列舉點即可

什麼?你問我怎麼計算距離和?

#include #include #include using namespace std;

typedef long long ll;

inline void read(int &x)

inline int cat_max(const int &a,const int &b)

inline int cat_min(const int &a,const int &b)printf("%lld\n",ans>>1);

getchar();getchar();

return 0;

}

3170 Tjoi 2013 松鼠聚會

題目鏈結 題目大意 給定平面上的n個點,求這n個點中的乙個點,使其到這n個點的切比雪夫距離之和最小 題解 根據結論 把座標系旋轉45 曼哈頓距離轉化成切比雪夫距離,把點 x y 變成 x y,x y 這樣新點之間的切比雪夫距離就是原點之間的曼哈頓距離 同理可以把切比雪夫距離轉化成曼哈頓距離,把點 x...

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