bzoj3170 松鼠聚會

2022-06-07 14:06:12 字數 729 閱讀 9438

這個距離就是切比雪夫距離,有乙個神奇的東西是說將(x,y)變成(x+y,x-y),然後就是曼哈頓距離,因此轉化後對x座標和y座標分別統計排序和求和(求字首和預處理+二分)

1 #include2

using

namespace

std;

3#define n 100005

4struct

jia[n];

7int

n,x,y,xx[n],yy[n];

8long

long

sx[n],sy[n],ans;

9long

long calc(int x,int

y)13

intmain()

22 sort(xx+1,xx+n+1

);23

for(int i=1;i<=n;i++)sx[i]=sx[i-1]+xx[i];

24 sort(yy+1,yy+n+1

);25

for(int i=1;i<=n;i++)sy[i]=sy[i-1]+yy[i];

26 ans=1e18;

27for(int i=1;i<=n;i++)ans=min(ans,calc(a[i].x,a[i].y));

28 printf("

%lld

",ans/2

);29 }

view code

bzoj 3170 松鼠聚會 旋轉座標

這道題大意是選定乙個點,使其它點到它的距離sigma dis max x x0,y y0 最小。做法是旋轉座標,橫縱座標分開統計每個點的答案,取最小值。啟示 以前知道旋轉座標可以將dis abs x x0 abs y y0 的 區域變成乙個dis max x x0,y y0 的正方形區域,這道題讓我...

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 ...