题目链接:

http://codeforces.com/gym/100851/attachments

题解:

二分枚举长度,BFS暴力找路径,注意边界的处理

代码:

#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 1000+10;
const double eps=1e-4;
struct node
{double x,y;
}p[maxn];
double mp[maxn][maxn];
double w;
int n;double Distance(node a,node b)
{return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}bool visited1[maxn],visited2[maxn];
bool BFS(double MAX,double &ansx,double &ansy)
{met(visited1,false);met(visited2,false);queue<int>q;q.push(0);visited1[0]=true;while(!q.empty()){int u=q.front();q.pop();for(int i=1;i<=n+1;i++){if(!visited1[i]&&mp[u][i]<MAX+eps){visited1[i]=true;q.push(i);}}}if(visited1[n+1]){ansx=p[1].x;ansy=p[1].y;return true;}while (!q.empty())q.pop();q.push(n+1);visited2[n+1]=true;while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<=n;i++){if(visited1[i]){if(mp[i][u]<MAX*2.0+eps){ansx=(p[i].x+p[u].x)/2.0,ansy=(p[i].y+p[u].y)/2.0;if(u==n+1)ansy=p[i].y,ansx=(w+p[i].x)/2.0;else if(u==n+1&&i==0)ansy=0.0,ansx=w/2.0;else if(i==0)ansy=p[u].y,ansx=p[u].x/2.0;return true;}continue;}if(!visited2[i]&&mp[u][i]<MAX+eps){visited2[i]=1;q.push(i);}}}return false;
}void slove()
{double Mid,Left,Right;double ans,ansx,ansy,tempx,tempy;Left=0.0,Right=w;int cnt=100;while(cnt--){Mid=(Left+Right)/2.0;if(BFS(Mid,tempx,tempy))Right=Mid,ans=Mid,ansx=tempx,ansy=tempy;elseLeft=Mid;}printf("%.3f %.3f\n",ansx,ansy);return;
}int main()
{freopen("froggy.in", "r", stdin);freopen("froggy.out", "w", stdout);scanf("%lf%d",&w,&n);for(int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);met(mp,0);mp[n+1][0]=mp[0][n+1]=w;for(int i=1;i<=n;i++){mp[0][i]=mp[i][0]=p[i].x,mp[n+1][i]=mp[i][n+1]=w-p[i].x;for(int j=i+1;j<=n;j++)mp[i][j]=mp[j][i]=Distance(p[i],p[j]);}slove();
}

Gym - 100851F Froggy Ford相关推荐

  1. Gym - 100851F Froggy Ford kruskal

    题目链接: http://acm.hust.edu.cn/vjudge/problem/307216 Froggy Ford Time Limit: 3000MS 题意 青蛙过河,河中有若干个石头,现 ...

  2. Gym - 100851F Froggy Ford (Dijkstra)

    题目链接:https://cn.vjudge.net/problem/Gym-100851F 这道题是POJ-2253的升级版:https://blog.csdn.net/GYH0730/articl ...

  3. Gym 100851F Froggy Ford(dijkstra)

    题意 有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石板.在河的一岸有一只青蛙想通过石板跳到对岸去.现在可以在河 中间某个位置多加一块石板,使得在单步跳跃中的最大值最小. 思路 ...

  4. Gym - 100851F - Froggy Ford(dijkstra)

    题目链接 参考   http://blog.csdn.net/KIJamesQi/article/details/52214990 题意 蛤蛤要从这岸去到对岸,河中有n块石头,现可以在河中添加一块石头 ...

  5. 【二分答案】【DFS】【分类讨论】Gym - 100851F - Froggy Ford

    题意:河里有n块石头,一只青蛙要从左岸跳到右岸,你可以再在任意一个位置放一块石头,使得在最优方案下,青蛙单步跳的距离的最大值最小化,输出该位置. 将原图视作完全图,二分答案mid,然后在图中只保留小于 ...

  6. Froggy Ford Gym - 100851F

    http://codeforces.com/gym/100851/attachments 青蛙过河 n个石头 当作n个点 任意两点之间都有边 边的花费即为两点欧式距离 现在可以在任意位置加一个石头 使 ...

  7. 【最短路】NEERC15 F Froggy Ford(2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 一只青蛙跳过宽为W的河,河中游N个石头,坐标xi,yi,现在往河中间添加一个石头,使得每次跳跃的最大的距离最小 ...

  8. 【最短路】NEERC15 F Froggy Ford (Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 一只青蛙跳过宽为W的河,河中游N个石头,坐标xi,yi,现在往河中间添加一个石头,使得每次跳跃的最大的距离最小 ...

  9. gym100851F Froggy Ford

    http://codeforces.com/gym/100851 第一眼,这不是noip2015DAY2T1原题吗.... 然后发现不太行,不过变化一下就行了 先二分一个最大跳的距离mid,去判断能不 ...

最新文章

  1. Subscriber class xxx ,xx already registered to event
  2. 如何用 TensorFlow 实现生成式对抗网络(GAN)
  3. C语言实现五子棋游戏(可N*N棋盘)
  4. java 下载二进制文件_使用Java从Github下载二进制文件
  5. fibonacci数列的性质(ZOJ3707)
  6. facebook 面试_如何为您的Facebook产品设计面试做准备
  7. webpack 配置详解
  8. design php 如何使用ant_Ant Design Pro初探—添加面包屑
  9. Mybatis(13)动态sql语句if/where/foreach
  10. C语言-数据结构-可变长顺序表的查找操作
  11. PyTorch 学习笔记(一):让PyTorch读取你的数据集
  12. MySQL学习(五、数据操作语言DML和事务处理语言TCL)
  13. 全能电子地图下载器 破解版 亲测可用
  14. 推荐收藏:50个最佳机器学习公共数据集
  15. 8、信息隐藏技术:数字水印技术
  16. 详细教您如何把wav转换成mp3格式
  17. 读梁宁《增长思维30讲》
  18. 简易数据分析 04 | Web Scraper 初尝--抓取豆瓣高分电影
  19. druiddatasource 方法_DruidDataSource详解(一)
  20. 【教程】安装torch_sparse、torch_cluster、torch_scatter、torch_spline

热门文章

  1. 订餐服务网络“橄榄订餐网”复制携程的“互联网+传统行业”模式已见成效
  2. 郑渊洁:从童话大王到微博大王
  3. 人工智能新技术——联邦学习的前世今生(上)
  4. 微信公众平台模板消息
  5. delegation java_SQL Server配置delegation实现double-hop
  6. 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
  7. iOS---The maximum number of apps for free development profiles has been reached.
  8. 今天败入音特美ER6i
  9. C++学习(四四三)Android手机支持的opengl特性
  10. Bespin Global 宣布获5.3亿元B轮融资 与微软Azure/AWS持续合作