Star Way To Heaven 题解
题目描述
小www伤心的走上了 StarwaytoheavenStar way to heavenStarwaytoheaven。
到天堂的道路是一个笛卡尔坐标系上一个n∗mn*mn∗m的长方形通道 顶点在(((顶点在(0,0)(0,0)(0,0)和(n,m))(n,m))(n,m)) 。
小www从最左边任意一点进入,从右边任意一点走到天堂,最左最右的距离为nnn,上下边界距离为mmm。
其中长方形有kkk个StarStarStar,每个StarStarStar都有一个整点坐标,StarStarStar的大小可以忽略不计。
每个StarStarStar以及长方形上下两个边缘(((宇宙的边界)))都有引力,所以为了成功到达heavenheavenheaven小www离他们越远越好。
请问小www走到终点的路径上,距离所有星星以及边界的最小距离最大值可以为多少?
输入格式
一行三个整数n,m,kn,m,kn,m,k。
接下来kkk行,每行两个整数xi,yixi,yixi,yi表示一个点的坐标。输出格式
一行一个数表示答案。保留到小数点后9位。
样例
样例输入
10 5 2
1 1
2 3
样例输出
1.118033989
算法分析
这道题可以二分,但是二分要超时,所以要用其他解法
1、所有点连接上边界(初始化)
2、最小生成树连接相邻点进行prim,连接直接可以在prim里面连接。如果一个点的半径能够触碰到最下面,那就说明已经成功封闭了。
3、最后输出最大连线距离,因为是两个点的半径,所以要除以2
注意:
这道题要用到坐标系上两点间长度
double Sqrt(edge x,edge y){return sqrt((x.xi-y.xi)*(x.xi-y.xi)+(x.yi-y.yi)*(x.yi-y.yi));
}
代码
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
const int M=1e6+5;
struct edge{double xi,yi;
}G[M];
double dis[M];
bool flag[M];
int n,m;
double Sqrt(edge x,edge y){return sqrt((x.xi-y.xi)*(x.xi-y.xi)+(x.yi-y.yi)*(x.yi-y.yi));
}
double Prim(){double ans=0;for(int i=1;i<=m;i++){dis[i]=n-G[i].yi;}dis[m+1]=n;for (int i=1;i<=m+1;i++){int id=0;for(int j=1;j<=m+1;j++){if(!flag[j]&&(dis[j]<dis[id]||id==0)){id=j;}}ans=max(dis[id],ans);if(id==m+1) break;flag[id]=true;for(int j=1;j<=m;j++){dis[j]=min(dis[j],Sqrt(G[j],G[id]));}dis[m+1]=min(dis[m+1],G[id].yi);}return ans/2;
}
int main(){scanf("%*d%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%lf %lf",&G[i].xi,&G[i].yi);}dis[m+1]=n;printf("%.9lf",Prim());return 0;
}
Star Way To Heaven 题解相关推荐
- Star Way To Heaven (prim最小生成树) // [ NOIP提高组 2014]飞扬的小鸟(DP)
文章目录 T1:Star Way To Heaven 题目 题解 代码实现 T2:飞扬的小鸟 题目 题解 代码实现 T1:Star Way To Heaven 题目 小 w 伤心的走上了 Star w ...
- 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 ...
- #Star Way To Heaven 优化二分 /prim凉宫春日的忧郁
之前是贪心看不粗来,现在二分也看不粗来了,QAQ... 审题清楚,别没看懂题就忙着暴搜,小w不一定走整点,可以走直线 其实,看到就应该想到二分了 那么其实二分的答案是作为每个点的半径以圆的形式出现的, ...
- NOIP模拟测试24「star way to hevaen·lost my music」
star way to heaven 题解 大致尝试了一下并查集,记忆化搜索,最小生成树 最小生成树是正解,跑最小生成树然后找到最大的值 欧几里德距离最小生成树学习 prim楞跑 至于为什么跑最小生成 ...
- 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!
转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...
- upcoj 2525 Twinkle Twinkle Little Star 题解
题目链接:upc2525: Twinkle Twinkle Little Star Twinkle Twinkle Little Star Twinkle, twinkle, little star, ...
- github javaguide_GitHub上收获Star数排名前10的Java项目
1. CS-Notes star:92.1k 介绍:技术面试必备基础知识.Leetcode.计算机操作系统.计算机网络.系统设计.Java.Python.C++ :地址:https://cyc2018 ...
- POJ-2069 Super Star(最小球覆盖)
POJ-2069 Super Star 题意: 给你n个点,求覆盖所有点的最小球的半径 4<=n<=30 题解: 求最小球覆盖的步骤: (1)对于一个点:球心就是这个点,且半径无穷小. ( ...
- 洛谷P1151、P1200、P1420、P1634题解(Java语言描述)
P1151题目要求 P1151题目链接 P1151题解 import java.util.Scanner;public class Main {public static void main(Stri ...
- 【进阶2-3期】JavaScript深入之闭包面试题解
(关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue.React.Node源码和实战.面试指导) 本周正式开始前端进阶的第二期,本周的主题是作用域闭包,今天是第8天. 本计划一共28期,每 ...
最新文章
- java面向对象(包package)
- SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】远程桌面 3389 Windows 2016
- Linux下Mysql的基本操作
- SphereEx 完成近千万美元 Pre-A 轮融资,连接企业数据与应用,构建新一代数据库生态引擎
- oracle 实例死掉,Oracle 监听莫名死掉
- Win11蓝屏100%不重启解决方法
- 计算机丢失lib.dll,libprotobuf.dll
- BayaiM__oracle切换归档模式步骤:
- mysql叠加select,MySQL – 有效地将两个select语句组合成一个...
- Google退出中国,谁的压力最大?
- 十二、流程控制之条件运算符
- Jsoup解析网页html
- 3、http网络编程——struct linger
- 清理谷歌浏览器注册表_chrome注册表怎么清理_如何清理没用的chrome注册表-win7之家...
- 麦克阿瑟奖得主Dawn Song:区块链能保密和保护隐私?图样图森破!
- matlab中电压跟踪型pwm,新型数字锁相环实现对电压信号的无差跟踪
- 微信视频号100w播放收入1000+的变现方式
- NEW a Girl Friend
- 【后续还会补充】Sublime Text 4 常用插件安装及配置方法
- 【编译原理】-- 第二章(三)(文法的化简改造、无用产生式、产生式的消除、文法的其他表示方法、例题)
热门文章
- 戴尔微型计算机怎么换硬盘,教你如何给DELL台式电脑换硬盘
- dh模型表matlab,建立DH模型的三种方法以及区别
- python 查看所有变量_CentOS6.查看 Python中变量的信息(名称类型内容等)
- 101个CV模型集体开源,魔搭社区视觉AI深度解析
- 电力需求侧管理及智能电力监控技术在电子设备制造行业错峰限电中的应用
- 设置快捷键使页面全屏
- 梦幻109鸿蒙量星太难杀,梦幻西游:维摩诘杀怪最少攻略,20分钟轻松做完!
- 磁盘 I/O 和网络
- java 数据倒叙_Java 数组,如何通过自定义实现倒叙排序?
- 2021“西湖论剑“网络安全大赛Writeup