#J1012D. 旅行城市

旅行城市

题目限制

1000 ms 256 M

题目描述

你正在一个城市里旅游,这个城市里有nn个景点,你需要从11号点出发,按顺序访问22号点、33号点...n1n-1号点、nn号点并结束冒险,本来是这样的。

但是你感觉有些累,希望跳过其中的若干个点。设你跳过了kk个点,则你跳过点的花费为:

k=0k=0,则花费为00

k>0k>0,则花费为2k12^{k-1}

而你路上总花费为:对于未跳过的剩余点,相邻点的距离之和。

需要注意的是,你必须11号点出发,nn号点结束,故11号点和nn号点不允许跳过。

对于平面上两点ab,ab的距离是线段ab的距离,可以使用sqrtsqrt函数计算:sqrt((xaxb)(xaxb)+(yayb)(yayb))sqrt((x_a-x_b) * (x_a-x_b)+(y_a-y_b) * (y_a-y_b))

现在你希望跳过00个或者若干个点,使得自己的跳过景点的花费+路上总花费最小。请你输出一个三位小数表示你的答案。

输入格式

第一行一个正整数nn表示景点数量。

接下来nn行,每行两个整数。第i+1i+1行表示第ii个景点的横纵坐标。

输出格式

输出一个三位小数表示最小的跳过景点的花费+路上花费。

数据范围

对于20%的数据,保证xi x_i为0,yiy_i为0或1。

对于40%的数据,保证n20n\leq 20

对于60%的数据,保证n100n\leq 100

对于100%的数据,保证2n105,0xi,yi100002\leq n \leq 10^5,0\leq x_i,y_i \leq 10000,不保证每个景点的坐标不同。

输入样例 1

2
0 0
10000 10000

输出样例 1

14142.136

输入样例 2

6
0 0
1 1
2 0
0 1
1 0
2 1

输出样例 2

5.828

样例解释

样例解释1

尽管11号点到22号点距离很大,但不允许跳过11nn号点,所以不得不走完全程,距离为100001000014142.13610000 * \sqrt{10000}\approx{14142.136}

样例解释2

你可以跳过3344号点,经过11225566号点。所需花费如下:

11号点至22号点花费为2\sqrt{2}

22号点至55号点花费为11

55号点至66号点花费为2\sqrt{2}

跳两个点,花费为21=22^1=2

总花费为3+223+2 * \sqrt{2}