题目描述

小 w 伤心的走上了 Star way to heaven。
到天堂的道路是一个笛卡尔坐标系上一个 n*m 的长方形通道 顶点在 (0,0) 和 (n,m) 。
小 w 从最左边任意一点进入,从右边任意一点走到天堂,最左最右的距离为 n,上下边界距离为m 。
其中长方形有 k 个Star ,每个 Star 都有一个整点坐标,Star 的大小可以忽略不计。
每个 Star 以及长方形上下两个边缘宇宙的边界都有引力,所以为了成功到达 heaven 小 w 离他们越远越好。
请问小 w 走到终点的路径上,距离所有星星以及边界的最小距离最大值可以为多少?

输入格式

一行三个整数n,m,k。
接下来 k 行,每行两个整数 表示一个点的坐标。

输出格式

一行一个数表示答案。保留到小数点后9位。

样例
样例输入
10 5 2
1 1
2 3
样例输出
1.118033989
数据范围与提示

对于 100% 的数据:k ≤ 6000;n,m ≤ 10610^6106

解析

求最小值的最大值,首先不难想到用二分求解,来二分答案,再来判断(老套路了)。但是,聪明的我发现这种算法时间复杂度为O(n2∗log(n)n^2*log(n)n2∗log(n))。再看看n的取值范围,明显会超时,据说是80分。
其实这道题要用到最小生成树。然后聪明的我就对了

  1. 先把所有点连接上边界
  2. 最小生成树连接相邻点(假设所有点相邻,这里方便就连了1,2两点)进行prim,连接直接可以在prim里面连接。如果一个点的半径能够触碰到最下面,那就说明,已经成功封闭了
    (如果刚好封闭就是最小值)


    (注:上述图片纯属瞎搞 仅供参考,实际请以代码为准 )
  3. 最后输出最大连线距离,因为这是两个点的半径,所以要除以2

代码

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define ll long long
const int MAXN = 1e7 + 5;
ll x[MAXN], y[MAXN];
double d[MAXN];
bool v[MAXN];
int n, m, k;
double ans;
double calc(ll x, ll y, ll x2, ll y2) {return sqrt(((x - x2) * (x - x2) + (y - y2) * (y - y2)));
}
void Read() {scanf("%d %d %d", &n, &m, &k);for(int i = 1; i <= k; i++)scanf("%lld %lld", &x[i], &y[i]);for(int i = 1; i <= k; i++)d[i] = y[i];d[k + 1] = m;
}
void Prim() {for(int j = 1; j <= k + 1; j++) {int minn = 0;for(int i = 1; i <= k + 1; i++)if(!v[i] && (d[i] < d[minn] || minn == 0))minn = i;ans = max(ans, d[minn]);if(minn == k + 1)break;v[minn] = 1;for(int i = 1; i <= k; i++)d[i] = min(d[i], calc(x[i], y[i], x[minn], y[minn]));d[k + 1] = min(d[k + 1], (m - y[minn]) * 1.0);}printf("%.9lf", ans / 2.0);
}
int main() {Read();Prim();return 0;
}

求求你点个赞再走,我的图真的很用心了

Star Way To Heaven题解(防题目重复)相关推荐

  1. Star Way To Heaven (prim最小生成树) // [ NOIP提高组 2014]飞扬的小鸟(DP)

    文章目录 T1:Star Way To Heaven 题目 题解 代码实现 T2:飞扬的小鸟 题目 题解 代码实现 T1:Star Way To Heaven 题目 小 w 伤心的走上了 Star w ...

  2. P7791 [COCI2014-2015#7] TETA 题解返回题目

    题意简述 给出 nn 道菜及其价格. 其中有四种不重复的菜可以组成一份套餐,价格为 cmpcmp . 给出需要买的菜品,其中,不在套餐中的需要单付,在套餐中的可以选择以整个套餐的价格支付部分套餐中的菜 ...

  3. 题解动态规划:蓝桥杯2022国赛B组 题解 A题目

    在这组题(蓝桥杯C/C++ B组 国赛)里面挑了几道喜欢的题目,做了一下,笔记思路如下.(其实是我觉得能做出的题 ) 题目图片来源于:CSDN 罚时大师月色 A:2022 [题目大意] 请问2022, ...

  4. 【周赛】第一周周赛——欢迎16级的新同学题解(题目出自codeforces 318A,546A,431C,665E,HDU 4104)

    A题: A题题目链接 A题题目描述: Home W的数学 TimeLimit:1000MS  MemoryLimit:256MB 64-bit integer IO format: %I64d Pro ...

  5. 黄浩老师cpp平时作业(十三)圆形正方形类 运算符重载组合类圆和点(排序与查找题目重复)

    解释:排序与查找题目与前面传重了,这个题目也没有面向对象,嗯,没有提醒老师,我不想多写题 狗头 基于类的链表稍后整理模板的时候上传吧,这题就不另传了,tas上有基于结构体的链表实现 运算符重载 //b ...

  6. 来自北大算法课的Leetcode题解:459. 重复的子字符串

    代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University. 解法1(T92% S72%):因为我们并不知道这个被重复的子 ...

  7. JZOJ 5401. 【NOIP2017提高A组模拟10.8】Star Way To Heaven

    Description Input Output Sample Input 10 5 2 1 1 2 3 Sample Output 1.11803399 Data Constraint Soluti ...

  8. asp.net中防刷新重复提交与防后退解决办法

    数据处理成功马上跳转到另外一个页面! 你的后台处理页面,也就是数据接收页面,执行完相关的操作后,使用下面的语句: response.write("<script>alert('数 ...

  9. #Star Way To Heaven 优化二分 /prim凉宫春日的忧郁

    之前是贪心看不粗来,现在二分也看不粗来了,QAQ... 审题清楚,别没看懂题就忙着暴搜,小w不一定走整点,可以走直线 其实,看到就应该想到二分了 那么其实二分的答案是作为每个点的半径以圆的形式出现的, ...

  10. NOIP模拟测试24「star way to hevaen·lost my music」

    star way to heaven 题解 大致尝试了一下并查集,记忆化搜索,最小生成树 最小生成树是正解,跑最小生成树然后找到最大的值 欧几里德距离最小生成树学习 prim楞跑 至于为什么跑最小生成 ...

最新文章

  1. 超硬核,整理的这10个自动化测试框架,使用后简直如有神助
  2. 无人驾驶油电混动牵引车_比纯电动更轻,省油率高达10%!解读首台国产非插电式混动卡车...
  3. python 词云_利用Python生成词云
  4. uniapp保存图片_Uniapp实现保存图片到相册(封装起来)
  5. 执行计划中的参数解释
  6. 《avascript 高级程序设计(第三版)》 ---第三章 基本概念
  7. ubuntu 安装cudnn
  8. Java 中接口 interface 实例介绍
  9. Windows 2003 上使用 Windows Live Writer
  10. Vue 脚手架结合 SpringBoot 构建前后端分离入门项目(实现增删改查)
  11. Pytorch中expand_as()函数详解
  12. python模块之random模块
  13. flt文件matlab,FLT文件扩展名 - 什么是.flt以及如何打开? - ReviverSoft
  14. JS特效代码大全(三)
  15. 使用rsync实现客户端与服务器端的文件同步与传送
  16. C语言实现七夕表白爱心
  17. 模电学习心得(转载)_史蒂文森sun_新浪博客
  18. 微信域名防封浅谈之一
  19. Redhat Linux 5.3环境实施DB2 V9.7 HADR
  20. 《自顶向下计算机网络》其二 Application Layer

热门文章

  1. 卡刷supersu和magisk实现安卓手机获取root权限
  2. springboot + rabbitmq 做智能家居,我也没想到会这么简单
  3. php执行fastlane,fastlane使用说明
  4. SpringBoot 系列教程(九十二):Spring Boot全局设置Jackson时间处理
  5. s型人口增长曲线matlab程序,matlab人口预测及数据曲线拟合.ppt
  6. 技术文摘12 yun jia 技术 资料 截图工具 美容
  7. 中国象棋棋盘java_JAVA中用程序绘制国际象棋与中国象棋棋盘
  8. 基频和倍频的概念_基频峰,泛频峰,倍频峰,二倍频峰的区别
  9. office2007每次打开都配置进度_win7下office2007总是配置进度怎么办-解决office2007显示配置进度的方法 - 河东软件园...
  10. 【 js 基础 】 setTimeout(fn, 0) 的作用