New Game! (最短路+建图)
New Game!
https://www.nowcoder.com/acm/contest/201/L
题目描述
这个迷宫有一些特点。为了方便描述,我们对这个迷宫建立平面直角坐标系。迷宫中有两条平行直线 L1:Ax+By+C1=0, L2:Ax+By+C2=0,还有 n 个圆
Hifumi Takimoto想从 L1 出发,走到 L2 。请计算最少需要多少体力。
输入描述:
第一行五个正整数 n,A,B,C
1
,C
2
(1≤ n ≤ 1000, -10000 ≤ A,B,C
1
,C
2
≤ 10000),其中 A,B 不同时为 0。
接下来 n 行每行三个整数 x,y,r(-10000 ≤ x,y ≤ 10000, 1≤ r ≤ 10000) 表示一个圆心为 (x,y),半径为 r 的圆。
输出描述:
仅一行一个实数表示答案。与正确结果的绝对误差或者相对误差不超过 10
-4
即算正确。
输入
2 0 1 0 -4
0 1 1
1 3 1
输出
0.236068 可以把圆看成一个点,利用点到直线的距离公式和点到点的距离公式,求出各个点之间的距离,跑一遍最短路即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<stack>
#include<algorithm>
#include<cmath>
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
using namespace std; int n;
double A,B,C1,C2;
struct Circle{
double x,y,r;
}p[]; double map[][];
double vis[];
double dis[]; double dist1(Circle a,Circle b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))-a.r-b.r;
} double dist2(double a,double b,double c,Circle d){
return (fabs(a*d.x+b*d.y+c)/sqrt(a*a+b*b)-d.r);
} void Dijstra(){
for(int i=;i<=n+;i++){
dis[i]=map[][i];
vis[i]=;
}
vis[]=;
dis[]=;
for(int i=;i<n+;i++){
double minn=INF;
int pos=;
for(int j=;j<=n+;j++){
if(!vis[j]&&dis[j]<minn){
minn=dis[j];
pos=j;
}
}
vis[pos]=;
for(int j=;j<=n+;j++){
if(!vis[j]&&dis[j]>minn+map[pos][j]){
dis[j]=minn+map[pos][j];
}
}
}
cout<<dis[n+]<<endl;
} int main(){
std::ios::sync_with_stdio(false);
cin>>n>>A>>B>>C1>>C2;
for(int i=;i<;i++){
for(int j=;j<;j++){
map[i][j]=INF;
}
}
for(int i=;i<=n+;i++){
cin>>p[i].x>>p[i].y>>p[i].r;
}
double tmp;
for(int i=;i<=n+;i++){
for(int j=i+;j<=n+;j++){
tmp=dist1(p[i],p[j]);
if(tmp>)
map[i][j]=map[j][i]=tmp;
else
map[i][j]=map[j][i]=;
}
}
for(int i=;i<=n+;i++){
tmp=dist2(A,B,C1,p[i]);
if(tmp>)
map[][i]=map[i][]=tmp;
else
map[][i]=map[i][]=;
tmp=dist2(A,B,C2,p[i]);
if(tmp>)
map[n+][i]=map[i][n+]=tmp;
else
map[n+][i]=map[i][n+]=;
}
map[][n+]=map[n+][]=fabs(C1-C2)/sqrt(A*A+B*B);
Dijstra(); }
New Game! (最短路+建图)的更多相关文章
- HDU 5521 [图论][最短路][建图灵感]
/* 思前想后 还是决定坚持写博客吧... 题意: n个点,m个集合.每个集合里边的点是联通的且任意两点之间有一条dis[i]的边(每个集合一个dis[i]) 求同时从第1个点和第n个点出发的两个人相 ...
- hdu4725 The Shortest Path in Nya Graph【最短路+建图】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4297574.html ---by 墨染之樱花 题目链接:http://acm.hdu ...
- Codeforces 938D. Buy a Ticket (最短路+建图)
<题目链接> 题目大意: 有n座城市,每一个城市都有一个听演唱会的价格,这n座城市由m条无向边连接,每天变都有其对应的边权.现在要求出每个城市的人,看一场演唱会的最小价值(总共花费的价值= ...
- HDU5521-最短路-建图
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- hdu 5294 Tricks Device 最短路建图+最小割
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294 Tricks Device Time Limit: 2000/1000 MS (Java/Other ...
- hdu 4725 The Shortest Path in Nya Graph (最短路+建图)
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 第八届河南省赛C.最少换乘(最短路建图)
C.最少换乘 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 94 Solved: 25 [Submit][Status][Web Board] De ...
- 『The Captain 最短路建图优化』
The Captain(BZOJ 4152) Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小 ...
- HDU-4725.TheShortestPathinNyaGraph(最短路 + 建图)
本题思路:主要是建图比较麻烦,因为结点可以在层与层之间走动,也可以在边上进行走动,所以主要就是需要找到一个将结点和层统一化处理的方法. 所以我们就可以对于存在边的结点建边,层与层之间如果层数相差一也建 ...
- bzoj2662: [BeiJing wc2012]冻结 最短路 建图
好久没有1A题啦♪(^∇^*) 一个sb建图,我居然调样例调了10min 看起来是双向边,其实在建图的时候要当成有向图, 否则他会时间倒流(233) 把每个点裂成k个点,然后把每条边裂成4条边(正向反 ...
随机推荐
- ASP.NET Web Pages:帮助器
ylbtech-.Net-ASP.NET Web Pages:帮助器 1.返回顶部 1. ASP.NET Web Pages - 帮助器 Web 帮助器大大简化了 Web 开发和常见的编程任务. AS ...
- 学习笔记之Microsoft Azure
Microsoft Azure - Wikipedia https://en.wikipedia.org/wiki/Microsoft_Azure Microsoft Azure (formerly ...
- python redis启用线程池管理
pool = redis.ConnectionPool(host=REDIS_HOST, port=REDIS_PORT,max_connections=3,password=REDIS_PASSWO ...
- 中国移动基于ARM/x86服务器的Ceph性能对比
2018年11月17日,Ceph中国行首次走进杭州,万众期待的杭州站沙龙如期而至,虽然杭州已经开始降温,阵雨不断,但活动现场依然热度爆表,杭州各大IT公司的从业人员和Ceph爱好者纷纷而来. 中国移动 ...
- Jenkins配置HTML报告(Windows环境)
1.首先安装插件HTML Publisher,点击直接安装 2.在任务中配置,构建后操作,添加Publish HTML reports 3.添加完成后,新增一项 4.HTML directory to ...
- python之ConfigParser
以前傻傻的不知道还有configParser这么方便的模块,都是一个个的解析转换…… 配置文件xxxxx # 注释1 ; 注释2 [section1] # 节点 k1 = v1 # 值 k2: ...
- [CoentOS] MySQL删除和安装
删除 MySQL yum remove mysql mysql-server mysql-libs mysql-server; find / -name mysql 将找到的相关东西delete掉(r ...
- spring boot 整合 (全)
参考: https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples
- leetcode463
public class Solution { public int IslandPerimeter(int[,] grid) { );//行数 );//列数 ; ; i < row; i++) ...
- 7. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
转自:http://www.kyjszj.com/htzq/79.html 1. if 语句 (简单的条件判断) 2. choose (when,otherwize) ,相当于java 语言中的 sw ...