#include<bits/stdc++.h>
using namespace std;
#define N 10005
int n,m,i,j;
long double dis[N],a[N],b[N],ans=1000000000.00,qp[65],f[N][65];
long double solve(int x,int y){
return sqrt((a[x]-a[y])*(a[x]-a[y])+(b[x]-b[y])*(b[x]-b[y]));
}
long double dfs(int k,int cnt){
if(k==n){
if(cnt==0) return 0.0;
return qp[cnt-1];
}
if(f[k][cnt]!=-1.0) return f[k][cnt];
long double Mx=1000000000000000.0;
for(int i=1;i+k<=n;i++){
if(cnt+(i-1)>45) break;
Mx=min(Mx,dfs(i+k,cnt+i-1)+solve(k,k+i));
}
return f[k][cnt]=Mx;
}
int main(){
qp[0]=1.0;for(i=1;i<=60;i++) qp[i]=qp[i-1]*2.0;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%Lf%Lf",&a[i],&b[i]);
for(i=1;i<=n;i++){
for(j=0;j<=60;j++) f[i][j]=-1.0;
}
ans=dfs(1,0);
printf("%.20Lf",ans);
return 0;
}
写了这个记搜过了,求问这个复杂度是多少?