你正在一个城市里旅游,这个城市里有n个景点,你需要从1号点出发,按顺序访问2号点、3号点...n-1号点、n号点并结束冒险,本来是这样的。
但是你感觉有些累,希望跳过其中的若干个点。设你跳过了k个点,则你跳过点的花费为:
若k=0,则花费为0。
若k>0,则花费为2^{k-1}。
而你路上总花费为:对于未跳过的剩余点,相邻点的距离之和。
需要注意的是,你必须1号点出发,n号点结束,故1号点和n号点不允许跳过。
对于平面上两点ab,ab的距离是线段ab的距离,可以使用sqrt函数计算:sqrt((x_a-x_b) * (x_a-x_b)+(y_a-y_b) * (y_a-y_b))。
现在你希望跳过0个或者若干个点,使得自己的跳过景点的花费+路上总花费最小。请你输出一个三位小数表示你的答案。
第一行一个正整数n表示景点数量。
接下来n行,每行两个整数。第i+1行表示第i个景点的横纵坐标。
输出一个三位小数表示最小的跳过景点的花费+路上花费。
2 0 0 10000 10000
14142.136
6 0 0 1 1 2 0 0 1 1 0 2 1
5.828
对于20%的数据,保证 x_i为0,y_i为0或1。
对于40%的数据,保证n\leq 20。
对于60%的数据,保证n\leq 100。
对于100%的数据,保证2\leq n \leq 10^5,0\leq x_i,y_i \leq 10000,不保证每个景点的坐标不同。
时间限制 | 1 秒 |
内存限制 | 256 MB |