題目鏈結
題目大意:給定平面上的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個松鼠要走到乙...