zoukankan      html  css  js  c++  java
  • B

    题意:两只青蛙,A和B,A想到B哪里去,但是A得弹跳有限制,所以不能直接到B,但是有其他的石头作为过渡点,可以通过他们到达B,问A到B的所有路径中,它弹跳最大的跨度的最小值

    分析:最短路问题,用prim解决的;开始想用dijkstra去做,写了一下发现掌握不熟练写不出来,看了别人的,然后就用了最小生成树,中间还是出了很多问题,有模板是好,但是不会灵活运用,那就尴尬了。。。。。

    AC代码 :

    #include <iostream>//最小生成树解决的
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #define MAX 100000
    using namespace std;
    int n,k;
    double mincost,m;
    double g[1001][1001],lowcost[1001];
    int vis[1001];
    struct Node
    {
    double x,y;
    } node[1001];
    void prim()
    {
    mincost=0;
    for(int i=1; i<=n; i++)
    //vis[i]=0;这个必须标记
    lowcost[i]=g[1][i];
    vis[1]=1;
    for(int i=1; i<=n; i++)
    {
    m=MAX;
    for(int j=1; j<=n; j++)
    if(!vis[j]&&lowcost[j]<m)
    {
    m=lowcost[j];
    k=j;
    }
    if(mincost<m)
    mincost=m;
    if(k==2) break;//这句话很关键.?????意思是只有两个石头的时候
    vis[k]=1;
    for(int j=1; j<=n; j++)
    if(!vis[j]&&lowcost[j]>g[k][j])
    lowcost[j]=g[k][j];
    }
    }
    //如果我是将所有还没走过的点标记为0,走过的标记为1的话,运行为0ms;无需清零
    //如果我只标记经过的点,然后清零的话就需要16ms,但是如果加上if(i==j) g[i][i]=0;则又是0ms;
    int main()
    {
    int cnt=1;
    while(~scanf("%d",&n))
    {
    memset(vis,0,sizeof(vis));
    if(n==0) break;
    for(int i=1; i<=n; i++)
    scanf("%lf%lf",&node[i].x,&node[i].y);
    for(int i=1; i<=n; i++)
    for(int j=1; j<=n; j++)
    {
    if(i==j) g[i][i]=0;
    else g[i][j]=MAX;
    }
    for(int i=1; i<=n; i++)
    for(int j=1; j<=n; j++)
    {
    g[i][j]=sqrt(fabs(node[j].x-node[i].x)*fabs(node[j].x-node[i].x)+fabs(node[j].y-node[i].y)*fabs(node[j].y-node[i].y))*1.000;
    }
    prim();
    printf("Scenario #%d ",cnt++);
    printf("Frog Distance = %.3f ",mincost);//不能用.3lf,那样会出错,因为lf只能用于scanf中,基础没打好。。。
    }
    return 0;
    }

  • 相关阅读:
    mac使用ssh出现permission denied(publickey)
    mac下解压bin文件
    Lint found fatal errors while assembling a release target问题的解决方案
    Cloud Foundry 组件
    maven中的groupId和artifactId到底指的是什么
    SpringBoot之常用注解
    Kafka系列文章
    [转]Kafka 设计与原理详解
    十张图了解Docker【转】
    四层、七层负载均衡的区别
  • 原文地址:https://www.cnblogs.com/lbyj/p/5710768.html
Copyright © 2011-2022 走看看