题意:有M只猴子,他们的最大跳跃距离为Ai。树林中有N棵树露出了水面,给出了它们的坐标。问有多少只猴子能在这个地区露出水面的所有树冠上觅食。

解法:由于要尽量多的猴子能到达所有树冠,便用Kruskal求一次MST最小生成树,也就得到了最大边最小的最小瓶颈生成树。在用这个最大边权计算合法的猴子树。

P.S.由于没有那些一下子输入几十万的数据,所以读优和不读优差别不大。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<algorithm>
5 #include<iostream>
6 using namespace std;
7
8 const int M=510,N=1010,D=2010;
9 int n,m,len;
10 int a[M],fa[N];
11 struct node{int x,y;}b[N];
12 struct edge
13 {
14 int x,y,d;
15 edge() {}
16 edge(int i,int j,int k) {x=i;y=j;d=k;}
17 }
18 e[N*N/2];
19
20 int sq_dist(int i,int j) {return (b[i].x-b[j].x)*(b[i].x-b[j].x)+(b[i].y-b[j].y)*(b[i].y-b[j].y);}
21 bool cmp(edge x,edge y) {return x.d<y.d;}
22 int ffind(int x)
23 {
24 if (fa[x]!=x) fa[x]=ffind(fa[x]);
25 return fa[x];
26 }
27 int Kruskal()
28 {
29 int i,j,k=0;
30 for (i=1;i<=n;i++) fa[i]=i;
31 sort(e+1,e+1+len,cmp);
32 for (i=1;i<=len;i++)
33 {
34 int fx=ffind(e[i].x),fy=ffind(e[i].y);
35 if (fx!=fy)
36 {
37 fa[fx]=fy,k++;
38 if (k==n-1) return e[i].d;
39 }
40 }
41 }
42 int read()
43 {
44 char c=getchar();
45 int x=0,t=1;
46 while (c>'9'||c<'0') {if (c=='-') t=-1;c=getchar();}
47 while (c<='9'&&c>='0') {x=x*10+(c-'0');c=getchar();}
48 return x*t;
49 }
50 int main()
51 {
52 int i,j,k;
53 m=read();
54 for (i=1;i<=m;i++) a[i]=read();
55 n=read();
56 for (i=1;i<=n;i++)
57 b[i].x=read(),b[i].y=read();
58 len=0;
59 for (i=1;i<=n;i++)
60 for (j=i+1;j<=n;j++)
61 e[++len]=edge(i,j,sq_dist(i,j));
62 int mx=Kruskal(),cnt=0;
63 for (i=1;i<=m;i++)
64 if (a[i]*a[i]>=mx) cnt++;
65 printf("%d\n",cnt);
66 return 0;
67 }

【bzoj2429】[HAOI2006]聪明的猴子(图论--最小瓶颈生成树 模版题)的更多相关文章

  1. 【uva 534】Frogger(图论--最小瓶颈路 模版题)

    题意:平面上有N个石头,给出坐标.一只青蛙从1号石头跳到2号石头,使路径上的最长便最短.输出这个值.(2≤N≤200) 解法:最小瓶颈树.而由于这题N比较小便可以用2种方法:1.最短路径中提到过的Fl ...

  2. BZOJ2429[HAOI2006]聪明的猴子[最小生成树 kruskal]

    2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 896  Solved: 575[Submit][Statu ...

  3. [BZOJ2429][HAOI2006]聪明的猴子(MST)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2429 分析:要让最大的最小,所以就是最小生成树上的啦,于是问题就变成了有多少个猴子&g ...

  4. [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)

    性质:最小生成树上任意两点间的最大边权,一定是这两点间所有路径的最大边权中最小的.证明显然. #include<cstdio> #include<cstring> #inclu ...

  5. BZOJ2429: [HAOI2006]聪明的猴子

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2429 题解:从某一点遍历n个点,且使最长边最短,就是MST了. 代码: #include< ...

  6. 最小生成树 2429: [HAOI2006]聪明的猴子

    BZOJ 2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 877  Solved: 566[Submit][ ...

  7. 最小生成树——[HAOI2006]聪明的猴子

    题目:[HAOI2006]聪明的猴子 描述: [题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳 ...

  8. BZOJ 2429: [HAOI2006]聪明的猴子( MST )

    水题, 求MST即可. -------------------------------------------------------------------------------- #includ ...

  9. 2429: [HAOI2006]聪明的猴子

    2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 448  Solved: 309[Submit][Statu ...

随机推荐

  1. sql查询速度慢分析及如何优化查询

    原因分析后台数据库中数据过多,未做数据优化数据请求-解析-展示处理不当 网络问题提高数据库查询的速度方案SQL 查询速度慢的原因有很多,常见的有以下几种:1.没有索引或者没有用到索引(查询慢最常见的问 ...

  2. Docker安装MySQL,Redis,阿里云镜像加速

    Docker安装 虚拟化容器技术.Docker基于镜像,可以秒级启动各种容器.每一种容器都是一个完整的环境,容器之间相互隔离. 如果之前安装的有其他版本,卸载旧的版本. $ sudo yum remo ...

  3. Pycharm同时执行多个脚本文件

    Pycharm同时执行多个脚本文件 设置Pycharm使它可以同时执行多个程序 打开Pycharm 找到Run,点击确认 点击Edit Configurations 右上角Allow parallel ...

  4. 【Linux】md5sum 生产所有文件的md5值,并对照目标文件是否相同

    现在加入有很多很多文件需要测试md5,想看下是否都传输成功了,如何批量生成文件的md5并且逐条对照呢? 下面来简单介绍下 md5sum这个命令有一个选项"-c" 这个选项的意思是c ...

  5. JDBC入门程序总结

    JDBC本质 只是一个接口 每个数据库的规范 就是实现类的接口 其实是官方 定义的一套操作所有关系型数据库的规则,就是接口,各个数据库厂商去实现这套接口,提供数据库驱动jar包, 我们可以使用这套接口 ...

  6. linux命名小技巧(持续更新)

    一   向某个文件批量加入内容 1.1 向/etc/wxm文件添加一大段内容可以使用这个命令 [root@registry easyrsa3]# cat <<EOF >varsset ...

  7. kubernets之pod的标签拓展

    一 标签的拓展使用 1.1 标签的作用范围不仅仅适用于pod对node以及其他类的大部分资源同样适用 k label node node01 gpu=true k是kubectl的别名形式 同样对于n ...

  8. 攻防世界-crypto-easychallenge(.pyc反编译)

    进入题目后下载附件,发现是一个.pyc文件. pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,运行加载的速度会有所提高:另一反面,把py ...

  9. Podinfo,迷你的 Go 微服务模板

    ​项目介绍 Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践. 它已实现的技术指标(截选自官方 README.md ): 里面每一 ...

  10. Socket.IO基础教程

    什么是Socket.IO Socket.IO是一个库,可用于在浏览器和服务器之间进行实时,双向和基于事件的通信.它包括: 使Node.js服务器:来源 | API 为浏览器(可从Node.js的也运行 ...