NOIP 模拟 $16\; \rm Star Way To Heaven$
题解 \(by\;zj\varphi\)
看懂题!!!
从最左穿到最右,一定会经过两个星星之间或星星和边界之间,那么我们穿过时当前最优一定是走中点
而我们要求最小的距离最大,那么我们将所有星星和边界(上下边界分别设为一个点)连成一个完全图,在图上跑出来一棵最小生成树
那么在最小生成树上的每条边的中点到边的端点一定比这个点到其它所有点的距离小,所以我们只需要找到一条在最小生成树上最大的边
注意,这道题是一个完全图,跑 \(\rm kruskal\) 当常数大时就 \(\rm TLE\) 了,所以跑 \(prim\)
\(prim\) 算法从一个边界开始找,当找到另一个边界时就可以停止了,因为这是我一定会穿过从一个边界到另一个边界的连线,而此时已经找到了
Code
#include<bits/stdc++.h>
#define ri register signed
#define p(i) ++i
using namespace std;
namespace IO{
char buf[1<<21],*p1=buf,*p2=buf;
#define gc() p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++
template<typename T>inline void read(T &x) {
ri f=1;x=0;register char ch=gc();
while(ch<'0'||ch>'9') {if (ch=='-') f=0;ch=gc();}
while(ch>='0'&&ch<='9') {x=(x<<1)+(x<<3)+(ch^48);ch=gc();}
x=f?x:-x;
}
}
using IO::read;
namespace nanfeng{
#define cmax(x,y) ((x)>(y)?(x):(y))
#define cmin(x,y) ((x)>(y)?(y):(x))
#define FI FILE *IN
#define FO FILE *OUT
typedef double db;
static const int N=6e3+7;
int vis[N],n,m,k;
double dis[N],mx;
struct node{
int x,y;
db Getdis(node tmp) {return sqrt((db)(this->x-tmp.x)*(db)(this->x-tmp.x)+(db)(this->y-tmp.y)*(db)(this->y-tmp.y));}
}pnt[N];
inline int main() {
// FI=freopen("nanfeng.in","r",stdin);
// FO=freopen("nanfeng.out","w",stdout);
read(n),read(m),read(k);
for (ri i(1);i<=k;p(i)) {
read(pnt[i].x),read(pnt[i].y);
dis[i]=m-pnt[i].y;
}
dis[k+1]=m;
while(1) {
int cur=0;
for (ri i(1);i<=k+1;p(i))
if (!vis[i]&&(!cur||dis[i]<dis[cur])) cur=i;
vis[cur]=1;
mx=cmax(mx,dis[cur]);
if (cur==k+1) break;
for (ri v(1);v<=k;p(v))
if (!vis[v]) dis[v]=min(dis[v],pnt[cur].Getdis(pnt[v]));
dis[k+1]=min(dis[k+1],1.0*pnt[cur].y);
}
printf("%.10lf\n",mx/2.0);
return 0;
}
}
int main() {return nanfeng::main();}
NOIP 模拟 $16\; \rm Star Way To Heaven$的更多相关文章
- NOIP模拟16:「Star Way To Heaven·God Knows·Loost My Music」
T1:Star Way To Heaven 基本思路: 最小生成树. 假如我们将上边界与下边界看作一个点,然后从上边界经过星星向下边界连边,会发现,他会形成一条线将整个矩形分为左右两个部分. ...
- NOIP 模拟 $16\; \rm Lost My Music$
题解 \(by\;zj\varphi\) 一道凸包的题 设 \(\rm dep_u\) 表示节点 \(u\) 的深度,那么原式就可化为 \(-\frac{c_v-c_u}{dep_v-dep_u}\) ...
- NOIP 模拟 $16\; \rm God Knows$
题解 \(by\;zj\varphi\) 对于这道题,不难想到可以用 \(dp\),就是求一个最小权极长上升子序列 设 \(dp_i\) 表示最后一个选 \(i\) 时,覆盖前 \(i\) 条边的最小 ...
- 7.15考试总结(NOIP模拟16)[Star Way To Heaven·God Knows·Lost My Music]
败者死于绝望,胜者死于渴望. 前言 一看这个题就来者不善,对于第一题第一眼以为是一个大模拟,没想到是最小生成树. 对于第二题,先是看到了状压可以搞到的 20pts 然后对着暴力一顿猛调后来发现是题面理 ...
- NOIP模拟 1
NOIP模拟1,到现在时间已经比较长了.. 那天是6.14,今天7.18了 //然鹅我看着最前边缺失的模拟1,还是终于忍不住把它补上,为了保持顺序2345重新发布了一遍.. # 用 户 名 ...
- 2021.5.22 noip模拟1
这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...
- NOIP 模拟 $22\; \rm f$
题解 \(by\;zj\varphi\) 对于一个数,如果它二进制下第 \(i\) 位为 \(1\),那么 \(\rm x\) 在这一位选 \(1\) 的贡献就是和它不同的最高为为 \(i\) 的数的 ...
- Noip模拟16 2021.7.15
题目真是越来越变态了 T1 Star Way To Heaven 首先,你要看出这是一个最小生成树的题(妙吧?) 为什么可以呢? 我们发现从两点连线的中点过是最优的,但是上下边界怎么办呢? 我们把上下 ...
- 2021.7.15考试总结[NOIP模拟16]
ZJ模拟D2就是NB.. T1 Star Way To Heaven 谁能想到这竟是个最小生成树呢?(T1挂分100的高人JYF就在我身边 把上边界和下边界看成一个点和星星跑最小生成树,从上边界开始跑 ...
随机推荐
- Anaconda软件安装使用问题
目录 更新源 用conda安装包出现的环境不一致问题 更新源 命令行 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/ ...
- 生成Dll在Unity中使用
我发现很多大佬,插件开发者以及Unity官方都在用Dll来保证既可让使用者正常使用也可有效防止使用者看到自己写的代码 版本说明 Visual Studio版本:2019 16.10.3 Unity版本 ...
- 『动善时』JMeter基础 — 55、JMeter非GUI模式运行
目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...
- C语言:char讲解与例子
#include <stdio.h> main() { char bla,blb,blc;//声明或定义三个字符型变量,变量名为bla,blb,blc //字符型数据用标识符char来标识 ...
- Java基础00-基础知识练习12
1. 减肥计划 1.1 if语句实现 import java.util.Scanner; public class Demo01 { public static void main(String[] ...
- 【动画消消乐】HTML+CSS 自定义加载动画 062
效果展示 Demo代码 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- 程序员们,还在挣扎着上不了github吗
前言 无兄弟,不篮球:无github,不代码.github和stackoverflow是程序员们的最爱,哪怕是github总是在抽疯,虐了程序员们千百遍,但他们还是想各种办法艰难地在github分享他 ...
- Python基础之魔术方法(一个序列容器的魔术方法)
# 创建自己想要的序列容器魔术方法'''__len__():调用len(obj)函数会调用这个魔术方法__getitem__(self,key):在使用下标操作temp['key']以及切片操作的时候 ...
- WEB安全新玩法 [8] 阻止订单重复提交
交易订单的重复提交虽然通常不会直接影响现金流和商品流,但依然会给网站运营方带来损害,如消耗系统资源.影响正常用户订单生成.制造恶意用户发起纠纷的机会等.倘若订单对象是虚拟商品,也有可能造成实际损失.订 ...
- powerdesigner连接postgresql数据库生成pdm及word文档
1.准备软件: powerdesigner165与postgresql的驱动:psqlodbc_11_01_0000 2.安装并破解完成powerdesigner165 参看链接:https://ww ...