题目描述

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

现在,在这个地区露出水面的有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包括一个整数,表示可以在这个地区的所有树冠上觅食的猴子数。

输入样例

4

1 2 3 4

6

0 0

1 0

1 2

-1 -1

-2 0

2 2

输出样例

3

说明

【数据规模】

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

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

感谢@charlie003 修正数据

思路:

把两个点之间的距离算出来,一边Kruskal,记录下最大的边,和每只猴子的跳跃距离比较一下,如果跳跃距离大就ans++。

代码:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;const int N=1010;
const int M=2500010;int fx,fy,n,m,p=0,ans=0;
int fa[N],x[N],y[N],z[N];struct no {int x,y,z;
} a[M];int find(int x) {if(fa[x]==x)return x;elsereturn fa[x]=find(fa[x]);
}bool cmp(no a,no b) {return a.z<b.z;
}int main() {scanf("%d",&n);for(int i=1; i<=n; i++)scanf("%d",&z[i]);scanf("%d",&m);for(int i=1; i<=m; i++) {fa[i]=i;scanf("%d%d",&x[i],&y[i]);fx=x[i],fy=y[i];for(int j=1; j<i; j++) {p++;int fxx=fx-x[j];int fyy=fy-y[j];int s=fxx*fxx+fyy*fyy;a[p].x=i;a[p].y=j;a[p].z=s;}}sort(a+1,a+p+1,cmp);for(int i=1; i<=p; i++) {fx=find(a[i].x),fy=find(a[i].y);if(fx==fy)continue;fa[fx]=fy;ans=a[i].z;}double q=sqrt(ans);int rans=0;for(int i=1; i<=n; i++)if(q<=z[i])rans++;printf("%d\n",rans);return 0;
}

转载于:https://www.cnblogs.com/mysh/p/11333668.html

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. [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)

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

  6. 语法入门*算法入门题单

    作者:王清楚 链接:https://ac.nowcoder.com/discuss/817596?type=101&order=0&pos=1&page=4&chann ...

  7. 【新手上路】语法入门算法入门题单

    作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...

  8. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

  9. 最小生成树 解释 + 板子题

    学习链接:https://oi-wiki.org/graph/concept/ 带有步骤:最小生成树 - 哎呦哎(iui) - 博客园 概念: 边权和最小的生成树 (v:点   g:边  | 只有连通 ...

  10. 2019.4.summary

    2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...

最新文章

  1. 学习shell脚本之乘法口诀
  2. c语言二级考试程序设计题难吗,计算机二级考试:题库抽的不是题是“命”!附赠考试通关全攻略!...
  3. 学习笔记Spark(八)—— Spark SQL应用(3)—— Spark DataSet基础操作
  4. Nginx 正向代理与反向代理区别
  5. 应用程序环境块相关代码
  6. java thread等特,进阶之路|奇妙的Thread之旅
  7. pytorch Tensor.backward
  8. Android 性能测试——Memory Monitor 工具
  9. sap采购申请自动转采购订单_SAP idoc功能够强大: 采购订单修改自动触发销售订单修改...
  10. python全栈工程师要求_Python全栈工程师
  11. 键盘视频鼠标(KVM)切换器基础知识
  12. 在HTML 页面中如何显示带圈圈的数字
  13. USG6310恢复管理员密码
  14. Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。
  15. 【完全背包】A005_LC_贴纸拼词(dp + 状态压缩)
  16. NancyFX 第五章 Nancy 路由
  17. python中幂运算_python的幂运算
  18. rx 6700xt性能相当于什么水平 rx 6700XT参数
  19. Linux下密码凭证窃取技巧和工具介绍
  20. Windows Server 2008 显示隐藏文件 扩展名

热门文章

  1. 如何运用时间管理四象限法则去管理时间?
  2. linux KVM的网络设置方法(bridge和nat)
  3. FPGA Vivado AXI _DMA IP介绍
  4. 诚龙网刻报错_诚龙网刻|诚龙网维全自动PXE网刻工具 V 11.0 官方版-完美软件下载...
  5. 解放军--女“黑客”
  6. java使用aspose打印pdf、word文件
  7. 从低位开始取出长整型变量s中奇数位上的数依次构成一个新数放在t中
  8. PIC16F877A与Proteus仿真-4位7段数码管驱动
  9. blog增量追加ing~(1/10阶段)ctf oj
  10. javascript 的alert()功能 prompt() 功能