Star Way To Heaven
题目描述
小 x伤心的走上了 Star way to heaven。
到天堂的道路是一个笛卡尔坐标系上一个 n*m的长方形通道 顶点在0,0 和 。
小 n,m 从最左边任意一点进入,从右边任意一点走到天堂,最左最右的距离n为 ,上下边界距离m为 。
其中长方形有 k个 ,每个k 都有一个整点坐标,star的大小可以忽略不计。
每个star 以及长方形上下两个边缘宇宙的边界都有引力,所以为了成功到达 小w 离他们越远越好。
请问小w走到终点的路径上,距离所有星星以及边界的最小距离最大值可以为多少?
输入格式
一行三个整数 。
接下来k行,每行两个整数 表示一个点的坐标。
输出格式
一行一个数表示答案。保留到小数点后9位。
样例
样例输入
10 5 2
1 1
2 3
样例输出
1.118033989
首先,我们要先简化题目
给出一个个星星,以某一个半径,封住一列,使其变为两部分,求这个半径最小为多少
题目分析
我们可以二分ans,然后用dfs或bfs来进行判断,但是,实际上,用这个方法会超时
于是,我们可以换一个思路,其实,我们可以从最上面为起点,构造最小生成树,如果说,
一个点的半径能够触碰到最下面,那就说明,已经成功封闭了
那具体该如何操作呢?
这里不能用常用的kruskal,而是用比较冷门的prim,首先,每一个初始值为每一个点到最上面的距离,然后取出最小的也就是离上面最近的,然后,用这一个点,更新每一点的最低值,其中,算出最大值即可
哪有什么时候结束呢,我们可以在开一个,为最上面到最下面的最小值,如果说,这个值被选中了,就说明已经被封闭来,直接输出即可,但是求的是半径,所以要/2
疑问?m不该是列吗,为什么变成来上下边界距离m
#include<bits/stdc++.h>
using namespace std;
int n;
double m;
int k;
double x[10005];
double y[10005];
double dist[100005];
int vis[10005];
double js(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
scanf("%d %lf %d",&n,&m,&k);
for(int i=1;i<=k;i++)
{
scanf("%lf %lf",&x[i],&y[i]);
}
for(int i=1;i<=k;i++)
{
dist[i]=m-y[i];
}
dist[k+1]=m;
double ans=-1;
dist[0]=1000000;
for(int j=1;j<=k+1;j++)
{
int mq=0;
for(int i=1;i<=k+1;i++)
{
if(!vis[i]&&dist[i]<dist[mq]){
mq=i;
}
}
ans=max(dist[mq],ans);
if(mq==k+1)
{
printf("%.9lf",ans/2);
return 0;
}
for(int i=1;i<=k;i++)
{
dist[i]=min(dist[i],js(x[i],y[i],x[mq],y[mq]));
}
dist[k+1]=min(dist[k+1],y[mq]);
vis[mq]=1;
}
}
Star Way To Heaven的更多相关文章
- [CSP-S模拟测试]:Star Way To Heaven(最小生成树Prim)
题目描述 小$w$伤心的走上了$Star\ way\ to\ heaven$. 到天堂的道路是一个笛卡尔坐标系上一个$n\times m$的长方形通道(顶点在$(0,0)$和$(n,m)$),小$w$ ...
- 7.15考试总结(NOIP模拟16)[Star Way To Heaven·God Knows·Lost My Music]
败者死于绝望,胜者死于渴望. 前言 一看这个题就来者不善,对于第一题第一眼以为是一个大模拟,没想到是最小生成树. 对于第二题,先是看到了状压可以搞到的 20pts 然后对着暴力一顿猛调后来发现是题面理 ...
- NOIP模拟16:「Star Way To Heaven·God Knows·Loost My Music」
T1:Star Way To Heaven 基本思路: 最小生成树. 假如我们将上边界与下边界看作一个点,然后从上边界经过星星向下边界连边,会发现,他会形成一条线将整个矩形分为左右两个部分. ...
- 题解 Star Way To Heaven
传送门 这整场都不会--这题想二分不会check 其实check很好写,考虑一个mid的实际意义 即为check在不靠近每个star及边界mid距离内的前提下,能不能到达\((n,m)\) 其实可以转 ...
- 20190817-T1-LOJ6322「雅礼国庆 2017 Day6」Star Way To Heaven
写这篇题解是因为作者太蒻已经忘了最小生成树了. <题面> 这个题还真是想不到最小生成树. $80\%$算法 复杂度:$\Theta(k^2 \log N )$ 用了二分答案(明显答案具有单 ...
- 「模拟8.17」star way to heaven(并查集,最小生成树)
80分打法 首先二分最后答案,答案即为r,可看作以每个k为圆心r为半径的圆 我们进行并查集维护,维护相交的圆的边界 最后判断是否存在圆将上下边界覆盖,如有证明不行 1 #include<iost ...
- NOIP 模拟 $16\; \rm Star Way To Heaven$
题解 \(by\;zj\varphi\) 看懂题!!! 从最左穿到最右,一定会经过两个星星之间或星星和边界之间,那么我们穿过时当前最优一定是走中点 而我们要求最小的距离最大,那么我们将所有星星和边界( ...
- NOIP模拟测试24「star way to hevaen·lost my music」
star way to heaven 题解 大致尝试了一下并查集,记忆化搜索,最小生成树 最小生成树是正解,跑最小生成树然后找到最大的值 欧几里德距离最小生成树学习 prim楞跑 至于为什么跑最小生成 ...
- NOIP模拟 24
连续爆炸的开端. 从这一场开始我没状态了 T1 star way to heaven 受强降雨boboQQQ影响,我一直认为这是一道和凸包有关的计算几何题 很快就弃了,除了期望没做过带实数的题,所以吓 ...
随机推荐
- 【C/C++】例题3-5 生成元/算法竞赛入门经典/数组与字符串
[题目] x+x的各位数之和为y,x为y的生成元. 求10万以内的n的最小生成元,无解输出0. [解答] 这是我根据自己的想法最初写的代码: #include<cstdio> #inclu ...
- Python enumerate():使用计数器简化循环
摘要:当您需要计数和迭代中的值时,Pythonenumerate()允许您编写 Pythonicfor循环.最大的优点enumerate()是它返回一个带有计数器和值的元组,因此您不必自己增加计数器. ...
- Groovy获取Bean两种方式(奇淫技巧操作)
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 背景: 在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配对象. 在Groovy ...
- gitlab 集成openldap
Setting up LDAP sign-in If you have an LDAP directory service such as Active Directory, you can conf ...
- 设计风格之REST
一.简介 REST简介 REST 是英文 representational state transfer(表象性状态转变)或者表述性状态转 移;Rest 是 web 服务的一种架构风格;使用 HTTP ...
- 『学了就忘』Linux系统管理 — 81、进程管理介绍
目录 1.进程与线程的概念 2.什么是进程管理 3.进程管理的作用 4.Linux进程的几种状态 5.进程与线程的关系 (1)线程与进程的关系 (2)总结 1.进程与线程的概念 来源百度百科: 进程( ...
- mysql深度优化与理解(迄今为止读到最优秀的mysql博客)
转载:https://www.cnblogs.com/shenzikun1314/p/6396105.html 本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如 ...
- Mac配置apache,mysql
===========Apache=============================== 1. 启动关闭Apache MAC系统已经预装了apache,启动.关闭.查看版本等命令如下: 启动a ...
- exit_hook在pwn题中的应用
以前只接触过malloc_hook,free_hook,大概意思就是在调用malloc和free的时候会先看看里面有没有东西,有的话就会执行.以前在看一些师傅们博客的时候有看到过exit_hook,前 ...
- IDT系统中断描述表以及绕过Xurtr检测的HOOK姿势
什么是中断? 指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程.即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个 ...