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 #include2view code3 #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 }
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...