题目描述

在一个热带雨林中生存着一群猴子,它们以树上的果子为生。昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上。猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的不同树冠上来回穿梭,以找到喜欢吃的果实。

现在,在这个地区露出水面的有N棵树,假设每棵树本身的直径都很小,可以忽略不计。我们在这块区域上建立直角坐标系,则每一棵树的位置由其所对应的坐标表示(任意两棵树的坐标都不相同)。

在这个地区住着的猴子有M个,下雨时,它们都躲到了茂密高大的树冠中,没有被大水冲走。由于各个猴子的年龄不同、身体素质不同,它们跳跃的能力不同。有的猴子跳跃的距离比较远(当然也可以跳到较近的树上),而有些猴子跳跃的距离就比较近。这些猴子非常聪明,它们通过目测就可以准确地判断出自己能否跳到对面的树上。

【问题】现已知猴子的数量及每一个猴子的最大跳跃距离,还知道露出水面的每一棵树的坐标,你的任务是统计有多少个猴子可以在这个地区露出水面的所有树冠上觅食。

输入格式

输入文件monkey.in包括:

第1行为一个整数,表示猴子的个数M(2<=M<=500);

第2行为M个整数,依次表示猴子的最大跳跃距离(每个整数值在1--1000之间);

第3行为一个整数表示树的总棵数N(2<=N<=1000);

第4行至第N+3行为N棵树的坐标(横纵坐标均为整数,范围为:-1000--1000)。

(同一行的整数间用空格分开)

输出格式

输出文件monkey.out包括一个整数,表示可以在这个地区的所有树冠上觅食的猴子数。

输入输出样例

输入 #1复制

41 2 3 4
6
0 0
1 0
1 2
-1 -1
-2 0
2 2

输出 #1复制

3

说明/提示

【数据规模】

对于40%的数据,保证有2<=N <=100,1<=M<=100

对于全部的数据,保证有2<=N <= 1000,1<=M=500

提示:这道题可以理解为最小生成树的做法来连通全图,然后用全图中两点最长的距离和每个猴子跳跃距离去比较,最终得出答案。

代码实现

#include<cmath>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int hz[100005];
int ax[100005],ay[100005];
struct edge{int u,v,w,next;bool operator <(const edge &a)const{return w<a.w;}
}e[1000005];
int f[100005];
int vis[100005];
int js(int x,int y){return 1ll*(ax[x]-ax[y])*(ax[x]-ax[y])+1ll*(ay[x]-ay[y])*(ay[x]-ay[y]);
}
int getf(int x){return x==f[x]?x:f[x]=getf(f[x]);
}
int ecnt=0;
void add(int u,int v ,int w){e[++ecnt].u=u;e[ecnt].v=v;e[ecnt].w=w;
}
int n,m;
int main(){cin>>m;for(int i=1;i<=m;i++){cin>>hz[i];}cin>>n;for(int i=1;i<=n;i++){cin>>ax[i]>>ay[i];}for(int i=1;i<=n;i++){f[i]=i;}for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){add(i,j,js(i,j));}}int cnt=0;double ans=-1;sort(e+1,e+1+ecnt);for(int i=1;i<=ecnt;i++){int u=getf(e[i].u);int v=getf(e[i].v);if(u!=v){cnt++;ans=max(ans,sqrt(e[i].w));//在这里稍加改动,记录一下最长距离f[u]=v;if(cnt==n-1){break;}}}int as=0;for(int i=1;i<=m;i++){if(ans<=hz[i]){as++;}}cout<<as;
}

克鲁斯卡尔算法如有不懂可以看这里克鲁斯卡尔算法详解

都看到这了,关注一下吧^^

P2504 [HAOI2006]聪明的猴子-题目详解相关推荐

  1. P2504 [HAOI2006]聪明的猴子 题解

    P2504 [HAOI2006]聪明的猴子 题解 题目 链接 字面描述 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 思路 代码实现 题目 链接 https://ww ...

  2. 洛谷p2504 HAOI2006 聪明的猴子

    [题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的部分植物 ...

  3. BZOJ 2429: [HAOI2006]聪明的猴子【最小生成树】

    2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MB Description 在一个热带雨林中生存着一群猴子,它们以树上的果子为生 ...

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

    2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1570  Solved: 902 [Submit][St ...

  5. 计算机组成原理课设题目详解

    计算机组成原理课设题目详解 一.实验一 1.实验名称: 验证74LS181运算和逻辑功能 2.实验目的: (1) 掌握算术逻辑单元(ALU)的工作原理: (2) 熟悉简单运算器的数据传送通路: (3) ...

  6. 蓝桥杯java B组历年省赛真题汇总及题目详解

    蓝桥杯java B组历年省赛真题汇总及题目详解 2019年第十届蓝桥杯省赛真题详解 2018年第九届蓝桥杯省赛真题详解 2017年第八届蓝桥杯省赛真题详解 2016年第七届蓝桥杯省赛真题详解 2015 ...

  7. 蓝桥杯历年省赛JAVA-B组真题汇总及题目详解

    蓝桥杯 历年省赛JAVA-B组真题汇总及题目详解 题目大致介绍: 第一题到第三题以及第六题是结果填空,方法不限得到最后结果就行. 第四题和第五题是代码填空题,主要考察算法基本功和编程基本功. 第八题到 ...

  8. 如何快速掌握MYSQL?附牛客网精选的50道SQL题目详解【入门推荐】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 另外也欢迎大家 ...

  9. Openjudge 题目详解 1.1

    Openjudge 题目详解 1.1编程基础之输入输出 [Hello, World!](http://noi.openjudge.cn/ch0101/01/) 描述 输入 输出 样例输入 样例输出 提 ...

  10. c语言中循环次数的问题,【C语言】循环题目详解

    老九学堂传送门 C语言有3种循环:for.while.do while: 接下来,老九君带着大家来详细的解析一下关于循环的题目,让你更加清楚和熟练的掌握循环. 三大循环 1.whlie循环: /* w ...

最新文章

  1. R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values
  2. vb如何实现在cad中打开dxf文件_CDR转CAD方法
  3. 微软发布的python教程_微软发布Python 教程《Develop with Python on Windows》
  4. Node.js 连接 MySQL 插入 TEXT 类型报错问题
  5. Day47 Django基础部分、路由配置、空间名称
  6. Go语言之父带你重新认识字符串、字节、rune和字符
  7. linux 切换用户身份、su、sudo、/etc/sudoers
  8. mysql与mysqli
  9. 1235813找规律第100个数_每日一课:奥数知识点 —— 找简单数列的规律
  10. 黑客技术之加密你的磁盘
  11. Fiddler原理~知多少?
  12. 【cs230】吴恩达Deep Learning-3/3
  13. 【多智能体感知与协同调度】
  14. 【开发工具下载汇总】
  15. 求微信小程序开发交流群
  16. poi设置excel行高
  17. 教你使用html三剑客写一个高级的伪3D效果
  18. cpu压测神器:cpuburn深度指南
  19. 金证部分笔试题--前中后序、IP地址分类、三次握手、BIO,NIO,AIO等
  20. 无法自动进入并单步执行服务器。未能连接到服务器计算机

热门文章

  1. 计算机毕业设计 SSM+Vue房屋出租系统 房屋租赁合同信息管理系统 房屋租售管理系统Java Vue MySQL数据库 远程调试 代码讲解
  2. java 生成二维码名片
  3. 小罗说敏捷 | 使用关键路径法优化项目进度管理
  4. [Xilinx FPGA] #8 Xilinx Power Estimator[XPE, 功耗估计器]的使用方法
  5. live555源码分析(七)播放过程
  6. java里面有radix树吗_基数树(radix tree)
  7. 在el-form-item 重置label宽度
  8. “约定优于配置”与Magento总结
  9. Android 高德地图自定义定位图标的显示
  10. Beautiful Soup 4.2.0 文档¶