Gym - 100851F Froggy Ford
题目链接:
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相关推荐
- Gym - 100851F Froggy Ford kruskal
题目链接: http://acm.hust.edu.cn/vjudge/problem/307216 Froggy Ford Time Limit: 3000MS 题意 青蛙过河,河中有若干个石头,现 ...
- Gym - 100851F Froggy Ford (Dijkstra)
题目链接:https://cn.vjudge.net/problem/Gym-100851F 这道题是POJ-2253的升级版:https://blog.csdn.net/GYH0730/articl ...
- Gym 100851F Froggy Ford(dijkstra)
题意 有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石板.在河的一岸有一只青蛙想通过石板跳到对岸去.现在可以在河 中间某个位置多加一块石板,使得在单步跳跃中的最大值最小. 思路 ...
- Gym - 100851F - Froggy Ford(dijkstra)
题目链接 参考 http://blog.csdn.net/KIJamesQi/article/details/52214990 题意 蛤蛤要从这岸去到对岸,河中有n块石头,现可以在河中添加一块石头 ...
- 【二分答案】【DFS】【分类讨论】Gym - 100851F - Froggy Ford
题意:河里有n块石头,一只青蛙要从左岸跳到右岸,你可以再在任意一个位置放一块石头,使得在最优方案下,青蛙单步跳的距离的最大值最小化,输出该位置. 将原图视作完全图,二分答案mid,然后在图中只保留小于 ...
- Froggy Ford Gym - 100851F
http://codeforces.com/gym/100851/attachments 青蛙过河 n个石头 当作n个点 任意两点之间都有边 边的花费即为两点欧式距离 现在可以在任意位置加一个石头 使 ...
- 【最短路】NEERC15 F Froggy Ford(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 一只青蛙跳过宽为W的河,河中游N个石头,坐标xi,yi,现在往河中间添加一个石头,使得每次跳跃的最大的距离最小 ...
- 【最短路】NEERC15 F Froggy Ford (Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: 一只青蛙跳过宽为W的河,河中游N个石头,坐标xi,yi,现在往河中间添加一个石头,使得每次跳跃的最大的距离最小 ...
- gym100851F Froggy Ford
http://codeforces.com/gym/100851 第一眼,这不是noip2015DAY2T1原题吗.... 然后发现不太行,不过变化一下就行了 先二分一个最大跳的距离mid,去判断能不 ...
最新文章
- Subscriber class xxx ,xx already registered to event
- 如何用 TensorFlow 实现生成式对抗网络(GAN)
- C语言实现五子棋游戏(可N*N棋盘)
- java 下载二进制文件_使用Java从Github下载二进制文件
- fibonacci数列的性质(ZOJ3707)
- facebook 面试_如何为您的Facebook产品设计面试做准备
- webpack 配置详解
- design php 如何使用ant_Ant Design Pro初探—添加面包屑
- Mybatis(13)动态sql语句if/where/foreach
- C语言-数据结构-可变长顺序表的查找操作
- PyTorch 学习笔记(一):让PyTorch读取你的数据集
- MySQL学习(五、数据操作语言DML和事务处理语言TCL)
- 全能电子地图下载器 破解版 亲测可用
- 推荐收藏:50个最佳机器学习公共数据集
- 8、信息隐藏技术:数字水印技术
- 详细教您如何把wav转换成mp3格式
- 读梁宁《增长思维30讲》
- 简易数据分析 04 | Web Scraper 初尝--抓取豆瓣高分电影
- druiddatasource 方法_DruidDataSource详解(一)
- 【教程】安装torch_sparse、torch_cluster、torch_scatter、torch_spline
热门文章
- 订餐服务网络“橄榄订餐网”复制携程的“互联网+传统行业”模式已见成效
- 郑渊洁:从童话大王到微博大王
- 人工智能新技术——联邦学习的前世今生(上)
- 微信公众平台模板消息
- delegation java_SQL Server配置delegation实现double-hop
- 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
- iOS---The maximum number of apps for free development profiles has been reached.
- 今天败入音特美ER6i
- C++学习(四四三)Android手机支持的opengl特性
- Bespin Global 宣布获5.3亿元B轮融资 与微软Azure/AWS持续合作