BZOJ3170 Tjoi 2013 松鼠聚會

2022-05-12 01:41:58 字數 2246 閱讀 8392

time limit: 10 sec  memory limit: 128 mb

submit: 531  solved: 249

[submit][status]

有n個小松鼠,它們的家用乙個點x,y表示,兩個點的距離定義為:點(x,y)和它周圍的8個點即上下左右四個點和對角的四個點,距離為1。現在n個松鼠要走到乙個松鼠家去,求走過的最短距離。

第一行給出數字n,表示有多少只小松鼠。0<=n<=10^5

下面n行,每行給出x,y表示其家的座標。

-10^9<=x,y<=10^9

表示為了聚會走的路程和最小為多少。

6-4 -1

-1 -2

2 -4

0 20 3

5 -2

20題解:

我們有兩個式子:max(a,b)=(a+b)/2 +|(a-b)/2|

以及:max(|a|,|b|)=|(a+b)/2|+|(a-b)/2|

然後對這題來說dist(i,j)=max(|xi-xj|,|yi-yj|),然後=|(xi-xj+yi-yj)/2|+|(xi-xj-yi+yj)|

我們另x『=x+y,y』=x-y,則2*dist(i,j)=|xi『-xj』|+|yi『-yj』|

然後就可以字首和字尾和掃一遍得出答案了。

**:

1 #include2

3 #include4

5 #include6

7 #include8

9 #include10

11 #include12

13 #include14

15 #include16

17 #include

1819 #include20

21 #include

2223

#define inf 1000000000000000ll

2425

#define maxn 100000+5

2627

#define maxm 500+100

2829

#define eps 1e-10

3031

#define ll long long

3233

#define pa pair34

35#define for0(i,n) for(int i=0;i<=(n);i++)

3637

#define for1(i,n) for(int i=1;i<=(n);i++)

3839

#define for2(i,x,y) for(int i=(x);i<=(y);i++)

4041

#define for3(i,x,y) for(int i=(x);i>=(y);i--)

4243

#define mod 1000000007

4445

using

namespace

std;

4647 inline int

read()

4849

5455

while(ch>='

0'&&ch<='9')

5657

return x*f;

5859}60

struct reca[maxn];

61int

n;62 inline bool cmp1(rec a,rec b)

63 inline bool cmp2(rec a,rec b)

6465

intmain()

6667

79 sort(a+1,a+n+1

,cmp1);

80 ll sum=0;81

for1(i,n)

8286 sum=0

;87 for3(i,n,1)88

92 sort(a+1,a+n+1

,cmp2);

93 sum=0;94

for1(i,n)

9599 sum=0

;100 for3(i,n,1

)101

105 ll ans=inf;

106 for1(i,n)ans=min(ans,a[i].z);

107 printf("

%lld\n

",ans>>1

);108

109return0;

110111 }

view code

bzoj3170 Tjoi 2013 松鼠聚會

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

BZOJ3170 Tjoi2013 松鼠聚會

給出n個點的座標,規定兩個點的距離 max x1 x2 y1 y2 要求選出乙個點,使得這個點到所有點的距離和最小 切比雪夫轉換例題 將乙個點 x,y x,y 的座標變為 x y2,x y2 x y,x y 後 x y x y2,x y2 原座標系中的切比雪夫距離 新座標系中的曼哈頓距離 求最小曼哈...

3170 Tjoi 2013 松鼠聚會

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