1. 原题: https://logn.me/problem/1017

2. 思路:

题意:最短路问题
思路:
难点在于把题意抽象成图,
即表示成传统的图的矩阵。
那么,我们可以在读取所有圆点信息后,
依次计算出每两点的暴露距离,存储到矩阵里。
然后,用传统的dijkstra算法求就可以了。
已AC

3. 源码;

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
using namespace std;struct Node
{Node() :ra(0){}int x, y, ra;
};int N;
const int Max = 1002;
const double INF = 9e20; //**要足够大, 小的话,后两个点过不去
vector<Node> mv;
double G[Max][Max];//**存储两点间距离
double dis[Max];//**起点到某点距离
int vis[Max] = { 0 };void dijk();//***经典的dijkstra算法
double get_dist(int aa, int bb);//**计算两点暴露的距离
int find_min();int main()
{//freopen("in.txt", "r", stdin);scanf("%d", &N);mv.resize(N + 2);//**存储所有圆点for (int i = 0; i < N; i++){scanf("%d %d %d", &mv[i].x, &mv[i].y, &mv[i].ra);}scanf("%d %d", &mv[N].x, &mv[N].y);scanf("%d %d", &mv[N+1].x, &mv[N+1].y);N += 2;for (int i = 0; i < N; i++){for (int j = i + 1; j < N; j++)G[i][j] = G[j][i] = get_dist(i, j);//**计算距离}dijk();printf("%.2f\n", dis[N - 1]);return 0;
}double get_dist(int aa, int bb)//**计算两点暴露的距离
{double re = sqrt(pow(mv[aa].x - mv[bb].x, 2) + pow(mv[aa].y - mv[bb].y, 2))- mv[aa].ra - mv[bb].ra;return (max(re, 0.0));
}
void dijk()//***经典的dijkstra算法
{for (int i = 0; i < N; i++){dis[i] = G[N - 2][i];}dis[N - 2] = 0;vis[N - 2] = 1;while (1){int v = find_min();if (v < 0)break;vis[v] = 1;for (int w = 0; w < N; w++){if (vis[w] == 0 && (G[v][w] + dis[v] < dis[w])){dis[w] = G[v][w] + dis[v];}}}
}int find_min()
{int mid = -1;double md = INF;for (int i = 0; i < N; i++){if (vis[i] == 0 && dis[i] < md){mid = i;md = dis[i];}}return mid;
}

[ANOJ]1017隐匿行踪[dijkstra]相关推荐

  1. 系统管理员必须知道的PHP安全实践

    系统管理员必须知道的PHP安全实践 PHP是一种开源服务器端脚本语言,应用很广泛.Apache web服务器提供了这种便利:通过HTTP或HTTPS协议, 访问文件和内容.配置不当的服务器端脚本语言会 ...

  2. 2018上半年游戏行业DDoS态势报告

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 0x0 前言 最新发布的2018全球游戏市场报告指出,2018年全球的游戏玩家数达到23亿,他们在游戏上 ...

  3. OSChina 娱乐弹弹弹——程序猿如何防火防盗防单身 OR 防败家?

    2019独角兽企业重金招聘Python工程师标准>>> 周一啦,明天就是万众瞩目的光棍节,过个光棍节容易嘛我,已经持续一周被各种光棍节信息轰炸,现在中毒已深.听说现在光棍节有两个解释 ...

  4. 渗透测试 --- 方法论

    渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体手段.方法论是在制定.实施信息安全审计方案时,需要遵循的规则.惯例和过程.人们在评估网络.应用.系统或三 ...

  5. 转载:渗透测试方法论(阅读)

    https://www.cnblogs.com/Sumarua/p/13521405.html @ 目录 第2章 渗透测试方法论 2.1 渗透测试的种类 2.1.1 黑盒测试 2.1.2 白盒测试 2 ...

  6. 每日时事新闻播报汇总

    每日时事新闻播报汇总,365资讯简报每天精选国际时事新闻.国内时事新闻.社会热点新闻简报12条 [365资讯简报]每天一分钟,知晓天下事!2021年1月13日 星期三 农历腊月初一 1.时事新闻热点 ...

  7. 每个人都应该懂点攻防

    网络如此发达的今天,攻击无处不在,而每一次攻击的成功往往造成信息的泄漏,严重者甚至带来经济的损失.所以作为技术人员,我们每个人都应该懂一点攻防:这样做虽然无法做到完全保护个人隐私,但对增强个人安全意识 ...

  8. 2022年P气瓶充装判断题及在线模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2022P气瓶充装考试100题为P气瓶充装复审题库理论知识考试题库!2022年P气瓶充装判断题及在线模拟考试根据P气瓶充装新版教材大纲编写.P气瓶充装考试 ...

  9. 国内最大盗号软件被查:缴获703万张手机黑卡

    [黑客联盟2016年11月11日讯]你见过700多万张电话卡堆在一起是什么场景吗?从2015年8月到今年4月底,警方在破获一起非法获取计算机信息系统数据专案的过程中,累积缴获手机黑卡703万张,其中, ...

最新文章

  1. gff文件_GFF格式说明
  2. android phonegap插件开发方法 plugin
  3. [Java开发之路](21)Comparator与Comparable
  4. 模块式开发 java_Java9系列第8篇-Module模块化编程
  5. mysql php状态函数_mysql_stat()查询MySQL服务器当前系统状态
  6. [jQuery] Zepto的点透问题如何解决?
  7. 远程连接“终端服务器超出了最大允许连接数” 解决
  8. 国家邮政局:3月中国快递发展指数为251.1 同比下降7.1%
  9. hackbar 使用教程_hackbar简单安装使用教程
  10. LeetCode 1 两数之和 python
  11. php disable-ipv6,強迫 PHP Curl 使用 IPv4 , 忽略 IPv6
  12. 创建型模式专题总结:Creational Pattern(转自Terrylee)
  13. C# 判断输入的字符是不是数字
  14. MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
  15. 计算机在信息社会中最广泛的应用是,计算机一级考题及答案整理
  16. 闽什么什么院第二课堂网课破解-----微信内置浏览器
  17. font-family:中文字体的英文名称
  18. [nlp] 双三次插值(BiCubic插值)
  19. 手游营销的10个靠谱方向
  20. linux学习第十三天 (Linux就该这么学)找到一本不错的Linux电子书

热门文章

  1. 概率基础-随机试验-古典概型-几何概型
  2. iphone id无法创建_如何直接在iPhone上创建免费铃声
  3. Jenkins中 File Parameter参数的使用
  4. I - [登峰造极-2016]_QAQ字符串
  5. 计算机英语形成性考核册答案,电大计算机本科【计算机数学基础(1)】形成性考核册答案(附完整题目)...
  6. oracle的wallet是什么意思,oracleWallet的使用
  7. 聊一聊数据加密中如何进行模糊查询
  8. [VSHalcon] 无法定位程序输入点于动态链接库 .dll上
  9. [讯商科技】15年选型经验丨服装行业erp选型原则
  10. 线性回归原理----简单线性回归、多元线性回归