• bitonic tour luogu1523


     1 #include<cstdio> 
     2 #include<cstring>
     3 #include<cmath>
     4 #include<ctime>
     5 #include<iostream>
     6 #include<algorithm>
     7 #include<queue>
     8 #include<set>
     9 #define inf (0x7fffffff)
    10 #define l(a) ((a)<<1)
    11 #define r(a) ((a)<<1|1)
    12 #define b(a) (1<<(a))
    13 #define T_min (1e-8)
    14 #define R (0.9998)
    15 #define e (2.718281828459045)
    16 #define pi (3.14159265358979323846)
    17 #define rep(i,a,b) for(int i=a;i<=(b);i++)
    18 #define clr(a) memset(a,0,sizeof(a))
    19 typedef long long ll;
    20 typedef unsigned long long ull;
    21 using namespace std;
    22 int readint(){
    23     int t=0,f=1;char c=getchar();
    24     while(!isdigit(c)){
    25         if(c=='-') f=-1;
    26         c=getchar();
    27     }
    28     while(isdigit(c)){
    29         t=(t<<3)+(t<<1)+c-'0';
    30         c=getchar();
    31     }
    32     return t*f;
    33 }
    34 const int maxn=1009;
    35 int n;
    36 double d[maxn][maxn];
    37 struct node{
    38     double x,y;
    39     inline bool operator<(const node A)const{
    40         return x<A.x||(x==A.x&&y<A.y);
    41     }
    42 }X[maxn];
    43 double dis(int u,int v){
    44     return sqrt((X[u].x-X[v].x)*(X[u].x-X[v].x)+(X[u].y-X[v].y)*(X[u].y-X[v].y)); 
    45 }
    46 int main(){
    47     //freopen("#input.txt","r",stdin);
    48     //freopen("#output.txt","w",stdout);
    49     n=readint();
    50     rep(i,1,n){
    51         X[i].x=readint();X[i].y=readint();
    52     }
    53     sort(X+1,X+n+1);
    54     //rep(i,1,n) printf("%d %d
    ",X[i].x,X[i].y);
    55     rep(i,1,n) rep(j,1,n) d[i][j]=1e30;d[1][2]=dis(1,2);
    56     rep(j,2,n){
    57         rep(i,1,j-1){
    58             if(j==i+1){
    59                 rep(k,1,i-1) d[i][j]=min(d[i][j],d[k][i]+dis(j,k));
    60             }else d[i][j]=min(d[i][j],d[i][j-1]+dis(j,j-1));
    61         }
    62     }
    63     double ans=1e30;
    64     rep(i,1,n-1) ans=min(ans,d[i][n]+dis(i,n));
    65     printf("%.2lf
    ",ans);
    66     //fclose(stdin);
    67     //fclose(stdout);
    68     return 0;
    69 }
    DP
  • 相关阅读:
    优秀的3D游戏开发系统和虚拟现实技术!
    C#反射实例(转)
    网易学院
    static 并发
    设计模式Strategy 策略模式
    1:统一建模语言UML轻松入门基本概念
    标准CSS 列表写法
    超级简单:ASP.NET Localization (本地化,多语言)
    js用escape()轻松搞定ajax post提交汉字的乱码问题
    认识.NET的集合
  • 原文地址:https://www.cnblogs.com/chensiang/p/7913221.html
Copyright © 2020-2023  润新知