whx大爷的题目怎么搞都能虐我= =
比赛的时候以为是神题然后没把时间放在上面,失策= =
其实并不难。(为什么你们都做过拯救小云公主那题啊。。)
假设我们的答案为ans,那么对于每一个点画一个半径为ans的圆,如果能从左走到右不经过圆那么ans就是成立的。
这样看来好像二分答案就可以了,然而n<=6000,带个log会被卡。
事实上,我们只要对于n个点的完全图,做mst,然后找出里面最大的边,就是点与点之间的距离,因为是圆,所以/2就行。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
typedef long long ll;
const ll inf=1e15;
const int N=2e5+5;
int head[N],next[N],go[N],from[N];
ll val[N],ans,dis[N];
int n,m,k,x[N],y[N],tot,vis[N];
inline void add(int x,int y,ll z)
{go[++tot]=y;val[tot]=z;next[tot]=head[x];head[x]=tot;
}
ll getdis(int a,int b)
{if (a>k||b>k) return 1ll*(y[a]-y[b])*(y[a]-y[b]);else return 1ll*(x[a]-x[b])*(x[a]-x[b])+1ll*(y[a]-y[b])*(y[a]-y[b]);
}
inline void prim()
{fo(i,1,k+2)dis[i]=inf;dis[k+1]=0;fo(i,1,k+2){int x=0;ll mn=inf;fo(j,1,k+2)if (!vis[j]&&dis[j]<mn)mn=dis[j],x=j;vis[x]=1;if(from[x])add(x,from[x],dis[x]),add(from[x],x,dis[x]);fo(j,1,k+2)if (!vis[j]&&getdis(x,j)<dis[j])dis[j]=getdis(x,j),from[j]=x;}
}
inline void dfs(int x,int fa,ll mx)
{if (x==k+2)ans=mx;for(int i=head[x];i;i=next[i]){int v=go[i];if (v!=fa)dfs(v,x,max(mx,val[i]));}
}
int main()
{freopen("starway.in","r",stdin);freopen("starway.out","w",stdout);scanf("%d%d%d",&n,&m,&k);fo(i,1,k){scanf("%d%d",&x[i],&y[i]);}y[k+1]=0,y[k+2]=m;prim();dfs(k+1,0,0);printf("%.8lf\n",sqrt(ans)/2.0);
} 

JZOJ5401. 【NOIP2017提高A组模拟10.8】Star Way To Heaven prim求mst相关推荐

  1. JZOJ 5404. 【NOIP2017提高A组模拟10.10】Graph

    Description 给定一张n个点m条边的无向图,每条边连接两个顶点,保证无重边自环,不保证连通 你想在这张图上进行若干次旅游,每次旅游可以任选一个点x作为起点,再走到一个与x 直接有边相连的点y ...

  2. 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 ...

  3. JZOJ 5400. 【NOIP2017提高A组模拟10.7】Repulsed

    Description 小w 心里的火焰就要被熄灭了. 简便起见,假设小w 的内心是一棵n -1 条边,n 个节点的树. 现在你要在每个节点里放一些个灭火器,每个节点可以放任意多个. 接下来每个节点都 ...

  4. JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore

    Description 小w 偶然间见到了一个DAG. 这个DAG 有m 层,第一层只有一个源点,最后一层只有一个汇点,剩下的每一层都有k 个节点. 现在小w 每次可以取反第i(1 < i &l ...

  5. JZOJ 5399. 【NOIP2017提高A组模拟10.7】Confess

    Description 小w 隐藏的心绪已经难以再隐藏下去了. 小w 有n + 1(保证n 为偶数) 个心绪,每个都包含了[1,2n] 的一个大小为n 的子集. 现在他要找到隐藏的任意两个心绪,使得他 ...

  6. JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks

    Description Input Output Sample Input 10 5 1 7 9 9 5 9 3 4 5 8 5 7 20 9 1 Sample Output 10 6 0 2 10 ...

  7. JZOJ 5397. 【NOIP2017提高A组模拟10.6】Biology

    Description Input Output Sample Input 5 5 zzj pri prime ime owaski 2 3 1 3 5 2 2 2 3 1 actri 2 2 3 4 ...

  8. JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation

    Description Input Output Sample Input 7 2 2343223 4 1 2234 Sample Output 2243233 2334 Data Constrain ...

  9. 【JZOJ 5405】【NOIP2017提高A组模拟10.10】Permutation

    Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换P ...

  10. JZOJ5399. 【NOIP2017提高A组模拟10.7】Confess bitset

    Description 小w 隐藏的心绪已经难以再隐藏下去了. 小w 有n + 1(保证n 为偶数) 个心绪,每个都包含了[1,2n] 的一个大小为n 的子集. 现在他要找到隐藏的任意两个心绪,使得他 ...

最新文章

  1. K8S的横向自动扩容的功能Horizontal Pod Autoscaling
  2. 1059 Prime Factors
  3. c语言 json 请求_怎么用C语言获取JSON中的数据?
  4. C/C++/Java 的基本数据类型
  5. WinForm 异步调用方法
  6. 国内第一本项目管理的实践书籍——《IT项目管理那些事儿》
  7. sicp第一章部分习题解答
  8. Autofac之自动装配
  9. 工作记录四-etcd与flanneld
  10. 2020年短视频及电商直播趋势报告
  11. Kali dig命令
  12. 基于单片机的指纹密码锁c语言程序,基于单片机的指纹识别电子密码锁设计(附程序,电路图)...
  13. 呼吸系统疾病病人的护理题库【2】
  14. 英伟达(NVIDIA)系列显卡(GPU)技术指标对比排行
  15. GAE(Generalized Advantage Estimation) PPO
  16. Python量化交易学习笔记(21)——A股股票列表更新
  17. 又一新框架 | 无监督图像转换任务新境界(附论文代码)
  18. 冒死改造好基友小黄鸭,结果出乎意料?!
  19. 3.6.2 找出分区的主副本
  20. 《白鹿原》读书笔记——纪实的戏剧

热门文章

  1. 什么是SystemUI?简单分析
  2. 做个优秀的时间管理者
  3. php去除emoji,php去除emoji表情
  4. <Halcon> 区域划分算子partition_dynamic和partition_rectangle
  5. 下载导出自定义格式Excel文件
  6. python中的 zip函数详解
  7. 第八章第六题(代数:两个矩阵相乘的方法)(Algebra: a method of multiplying two matrices)
  8. 计算机桌面背景显示方式有几种,如何让计算机自动更改桌面背景
  9. FPGA的进阶项目——开源示波器
  10. win7计算机属性资源管理器停止工作,Win7系统Windows资源管理器已停止工作怎么解决?...