好几天没更新博客了,因为这周在看关于图论的算法,有好几个(还是英文名字-_-||),人晕晕的......

说一下这个Frogger吧。这个题目的话......难的不是做法,而是题意。。。

大致题意:有两只青蛙A和B,都在湖里的石头上(湖里还有其他石头),现在A要去B的位置,方法是借助其他石头跳过去,求的是所有可达路径中,权值(石头之间的距离)最大的是多少。

每组案例的第一组和第二组数据分别是青蛙A和青蛙B的坐标。这么说吧,求最小生成树的最大权。

尴尬的是写的是混合语言啊,不会用操纵符(-_-||)。新手,对算法还不是很了解,请多多体谅!!!

Sample Input

2                           // 石头(点)的个数N,下面N行是石头的坐标

0   0

3   4

17   4

19   4

18   5

Sample Output(注意结果从#1开始,并且每次输出空一行,结果保留三位小数)

Scenario #1 Frog Distance = 5.000

Scenario #2 Frog Distance = 1.414

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define size 220
using namespace std; struct point//石头(图的顶点)
{
double x,y;
}p[size]; double stone[size][size],dis[size];//一个存图,一个存点之间的距离(权)
int N,T,i,j,flag[size];//flag存标记的
double a,b,ans,tem,minx; double distance(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));//两点之间的距离
} void Init()//初始化两个数组
{
memset(flag,,sizeof(flag));
memset(stone,,sizeof(stone));
} double Prim()
{
ans=;
int key;
double temp=0xfffffff;//先来一个大数
for(i=;i<=N;i++)
dis[i]=stone[][i];//存上各自的距离(权)
flag[]=;//咱们先从1号位置开始遍历
for(i=;i<N;i++)
{
minx=temp;
for(j=;j<=N;j++)
if(flag[j]!=&&dis[j]<minx)//找到没有遍历过的点并且它周围权值最小的边
{
minx=dis[j];//把这条边的权设置为最小,下次就跟它比较了
key=j;//记录一下这个点
}
if(ans<minx)
ans=minx;//记录一下距离
if(key==)//到终点了,结束
break;
flag[key]=;//这个点已经来过了
for(int j=;j<=N;j++)//维护这棵树(取权值较小的)
{
if(flag[j]!=&&stone[key][j]<dis[j])
dis[j]=stone[key][j];
}
}
return ans;
} int main()
{
T=;
while((cin>>N),N)
{
Init();
for(i=;i<=N;i++)
cin>>p[i].x>>p[i].y;//输入坐标
for(i=;i<=N;i++)
for(j=;j<=N;j++)
stone[i][j]=stone[j][i]=distance(p[i].x,p[i].y,p[j].x,p[j].y);//两点的距离(a到b等效b到a)
cout<<"Scenario #"<<T<<endl;
printf("Frog Distance = %.3lf\n",Prim());//这里有点尴尬(-_-||)
cout<<endl;
T++;
}
return ;
}

2016HUAS_ACM暑假集训3B - Frogger的更多相关文章

  1. 2016HUAS_ACM暑假集训4C - 递推

    题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...

  2. 2016HUAS_ACM暑假集训4A - 递推

    利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...

  3. 2016HUAS_ACM暑假集训4D - 计数,排列

    一个错排公式的基础应用. 大致题意:求n个数的错误排列方式.(每个都要错) 在这里先贴一下错排公式:D(1)=0:D(2)=1:D(n)=(n-1)*(D(n-1)+D(n-2)) 它的推导也非常有意 ...

  4. 2016HUAS_ACM暑假集训4M - 基础DP

    简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1                            //测试组数T 5 10     ...

  5. 2016HUAS_ACM暑假集训4K - 基础DP

    我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...

  6. 2016HUAS_ACM暑假集训4F - 数论

    这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...

  7. 2016HUAS_ACM暑假集训4B - 递推

    这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...

  8. 2016HUAS_ACM暑假集训3G - 还是畅通工程

    最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3                             //村庄个数1 2 1               ...

  9. 2016HUAS_ACM暑假集训3F - Jungle Roads

    这个题目属于最小生成树问题,可以用Prim,也可以用Kruskal(还没试).题意简单直接,给你一个图,求出它最小生成树的权值. 题目最有趣的地方就是图的顶点是字母,稍微处理一下就好了. Sample ...

随机推荐

  1. 轻松解决Linux安装Eclipse方法

    随着Linux的发展,很多人开始学习Linux系统,你了解Linux系统么?你是Linux系统的应用者么?本文为你详细介绍Linux安装Eclipse,为你在学习Linux安装Eclipse时起一定的 ...

  2. android View事件分发机制结论

    原始博客有对源码的分析:http://blog.csdn.net/lmj623565791/article/details/39102591 结论:1.view事件的分发流程: dispatchTou ...

  3. Android Studio UML 插件 PlantUML 使用语法

    活动标签(activity label)以冒号开始,以分号结束. 文本格式支持creole wiki语法. 活动默认安装它们定义的顺序就行连接. @startuml :Hello world; :Th ...

  4. Redis设计思路学习与总结

    版权声明:本文由宋增宽原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/222 来源:腾云阁 https://www.qclo ...

  5. c#遍历并判断实体或类的成员属性

    c#的Attribute有些类似java中的annotation,可以方便地在类成员中做修饰/限制作用. Demo: class ss { public stat BsonDocument Itera ...

  6. python编程技巧2

    模块化 ---- 这是我们程序员梦寐以求的,通过模块化可以避免重复的制造轮子. 同时 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块 ...

  7. C/C++ 如何来自动优雅的涮别银家的贴子

    被涮屏涮烦了,就分享一下如何用低调的c/c++来涮别人家的屏吧! 此处埋下三颗雷! 这不是啥新知识,也不是什么浅显的代码.下面,来淘淘这份经验,呼呼 我们要了解Web browser 这个控件,因为到 ...

  8. App_GlobalResources.afvubzdv.resources.dll”--“拒绝访问。“

    在使用ArcGIS Viewer for Silverlight创建应用程序的时候有时会出现编译错误 前面的忘了  最后是App_GlobalResources.afvubzdv.resources. ...

  9. tomcat通过conf-Catalina-localhost目录发布项目详解 摘自:http://www.cnblogs.com/iyangyuan/archive/2013/09/12/3316444.html

    Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目,是最佳选择. 因为这样对tomcat的入侵性最小,只需 ...

  10. 树(一)——线段树

    问题 现在有1~30这30个数,数N被抽上的概率正比于1/sqrt(N+1),求满足这个概率分布的随机数发生器. 思路 第一,如何解决这个"概率正比"问题. 第二,如何产生满足条件 ...