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;
    }

  • 相关阅读:
    自动化测试知识点汇总(200421)
    Mac_使用allure 生成测试报告
    mac_使用Charles抓取Firefox 链接
    工具列表
    Appium_iOS_Safari测试脚本(2)
    日志学习(一)
    java中==和equals的区别(转)
    jackson使用localdatetime转换json出现问题
    js复习--基础
    复习下CSS-零碎要点
  • 原文地址:https://www.cnblogs.com/lbyj/p/5710768.html
Copyright © 2011-2022 走看看