题目描述
小 A 决定开始一场奇妙的徒步旅行,旅行地图可以看成是一个平面直角坐标系,小 A 从家 O ( 0 , 0 ) O(0, 0) O(0,0)出发,每一步移动只能由他此时所在的位置 ( x , y ) (x,y) (x,y)走到以下四个坐标之一: ( x − 1 , y ) , ( x , y − 1 ) , ( x + 1 , y ) , ( x , y + 1 ) (x-1,y),(x,y-1),(x+1,y),(x,y+1) (x−1,y),(x,y−1),(x+1,y),(x,y+1)。
现在有 n n n个旅游景点,第 i i i个旅游景点位置为(xi ,yi)。
由于世界如此之大,整个旅行地图被分成了多个不同的气候区,某个景点(xi ,yi)的气候区Ci=max(xi ,yi) 。小 A 想要更好的了解这个世界使得他这次徒步旅行更有意义,所以他想要去气候区 旅行当且仅当访问完气候区为 的所有旅游景点。当他访问完所有的景点时,他会回到家里。
输入格式
小 A 想让你帮他设计出一条旅游路线使得他移动的步数最少,因为徒步旅行还是比较累的……
输入格式
第一行输入一个整数n,表示旅游景点数量。
接下来n行,每行一个整数对(xi ,yi)代表第 个景区的位置。
输出格式
仅一行,表示小 A 完成旅行所需移动的最少步数。
样例
样例输入1
8
2 2
1 4
2 3
3 1
3 4
1 1
4 3
1 2
样例输出1
20
样例输入2
5
2 1
1 0
2 0
3 2
0 3
样例输出2
12
分析
首先看到这一道题,一定会想到使用搜索(他把方向都告诉你了)。
但我看了一眼数据—— 1 0 9 10^9 109。(我TM直接放弃 )
所以说搜索是肯定会超时的。但终究有点分。
对于每一个气候,可以发现它的起点和终点最有的取法一定是两个端点。
在最优解中,只需要走到两个端点,就可以遍历玩这一气候区的所有点。
然后……
先把输入的 x , y x,y x,y按气候区的从小到大排序,即:
bool cmp(Node x, Node y) {
return x.Map_C != y