zoukankan      html  css  js  c++  java
  • 洛谷

    https://www.luogu.org/problemnew/show/P1433

    并不是每一个求最短距离就是bfs,这个肯定是dfs。

    直接计算15!可以知道枚举必定超时,但是!

    我们dfs非常方便最优性剪枝!

    这个是不加最优性剪枝的版本,果断T了:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    inline double sq(double d){
        return d*d;
    }
    
    int n;
    struct Point{
        double x,y;
        double dis(Point &p){
            return sqrt(sq(x-p.x)+sq(y-p.y));
        }
    }p[16];
    
    double ans=1e64;
    
    int used[16];
    
    void dfs(int id,double dis,int cnt=0){
        if(cnt>=n){
            //ans=min(ans,dis);
            //printf("%.2f
    ",dis);
            if(dis<ans){
                ans=dis;
            }
        }
        else{
            for(int i=1;i<=n;i++){
                if(used[i]==0/*&&dis+p[id].dis(p[i])<ans*/){
                    used[i]=1;
                    dfs(i,dis+p[id].dis(p[i]),cnt+1);
                    used[i]=0;
                }
            }
        }
    }
    
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%lf%lf",&p[i].x,&p[i].y);
        }
    
        p[0].x=p[0].y=0;
    
        used[0]=1;
        dfs(0,0,0);
        used[0]=0;
    
        printf("%.2f
    ",ans);
    }
  • 相关阅读:
    Network(树形dp)洛谷2899
    2590 树的统计
    LCT 最小生成树
    几种贪心小结
    snmp
    div页面跳转
    2017.11.2总结,回顾及成果
    2017.11.1知识总结及回顾
    check,form,单选框与复选框总结
    HTML空格字符
  • 原文地址:https://www.cnblogs.com/Yinku/p/10658965.html
Copyright © 2011-2022 走看看