Description

在一个热带雨林中生存着一群猴子,它们以树上的果子为生。昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上。猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的不同树冠上来回穿梭,以找到喜欢吃的果实。
现在,在这个地区露出水面的有N棵树,假设每棵树本身的直径都很小,可以忽略不计。我们在这块区域上建立直角坐标系,则每一棵树的位置由其所对应的坐标表示(任意两棵树的坐标都不相同)。
在这个地区住着的猴子有M个,下雨时,它们都躲到了茂密高大的树冠中,没有被大水冲走。由于各个猴子的年龄不同、身体素质不同,它们跳跃的能力不同。有的猴子跳跃的距离比较远(当然也可以跳到较近的树上),而有些猴子跳跃的距离就比较近。这些猴子非常聪明,它们通过目测就可以准确地判断出自己能否跳到对面的树上。
【问题】 现已知猴子的数量及每一个猴子的最大跳跃距离,还知道露出水面的每一棵树的坐标,你的任务是统计有多少个猴子可以在这个地区露出水面的所有树冠上觅食。

Input

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

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

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

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

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

Output

包括一个整数,表示可以在这个地区的所有树冠上觅食的猴子数

Sample Input

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

Sample Output

3

HINT

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

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

题解:

  能跳到所有树上面,说明了图必须是联通的,是一个最小生成树,剩下的不解释、、完了最开始又忘记了father数组初始化,这记性。。我还是弃疗吧

  

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int MAXN=1000;
int n,m,cnt;
double maxi;
int father[MAXN];
int a[MAXN];
struct xx
{int from,to;double w;
}e[MAXN*MAXN];
struct Point
{int x,y;
}point[MAXN];
bool cmp(xx x,xx y)
{return x.w<y.w;
}
double dist(int x,int y)
{return sqrt((pow((point[x].x-point[y].x)*1.0,2)+pow((point[x].y-point[y].y)*1.0,2)));
}
inline void add(int x,int y,double z)
{cnt++;e[cnt].from=min(x,y);e[cnt].to=max(x,y);e[cnt].w=z;
}
int find(int x)
{if(x==father[x]) return x;father[x]=find(father[x]);return father[x];
}
void Kruskal()
{int i=1,d=1;while(i<=cnt&&d<n){int x=e[i].from;int y=e[i].to;if(find(x)!=find(y)){//cout<<"!";father[find(x)]=find(y);maxi=e[i].w;d++;}i++;}
}
int main(int argc, char *argv[])
{int i,j,x,y;int ans=0;scanf("%d",&m);for(i=1;i<=m;i++)scanf("%d",&a[i]);scanf("%d",&n);for(i=1;i<=n;i++) father[i]=i;for(i=1;i<=n;i++){scanf("%d%d",&point[i].x,&point[i].y);}for(i=2;i<=n;i++)for(j=1;j<i;j++){add(j,i,dist(j,i));}sort(e+1,e+cnt+1,cmp);Kruskal();//cout<<maxi<<endl;for(i=1;i<=m;i++)if(a[i]>=maxi) ans++;printf("%d\n",ans);return 0;
}

2429: [HAOI2006]聪明的猴子相关推荐

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

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

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

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

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

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

  4. 洛谷p2504 HAOI2006 聪明的猴子

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

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

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

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

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

  7. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

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

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

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

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

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

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

最新文章

  1. python super 理解(一)
  2. vue路由跳转权限_如何在vue中实现路由跳转判断用户权限功能?
  3. CodeForces 903D Almost Difference
  4. 不大于数的2整数幂的数
  5. cydia源_Cydia常见错误提示(红字/黄字)
  6. 定义mysql日志_请教:如何查看mysql数据定义操作的日志
  7. 【B站免费教程】2W 收藏!火爆 B 站的计算机科学速成教程发布,全中文版
  8. 就等android了
  9. python 爬虫生成csv文件和图_python爬虫系列(4.2-python操作csv文件)
  10. C语言中各小写字母对应的ascal码值,asc2(ascall码对照表)
  11. TOUCH  PANEL
  12. SSL证书问题SSL certificate problem: self signed certificate
  13. openpyxl给excel设置条件格式
  14. CSDN 技术问答升级规则
  15. 笔记本显示服务器未能登录,win10系统出现User profile service服务未能登录的解决方案...
  16. 深挖Openstack Nova - evacuate疏散函数
  17. 每日一题:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
  18. hrbust 2366 Print rhombus
  19. linux常用命令(轻松入门linux)
  20. Unknown module(s) in QT: webenginewidgets原因及解决办法

热门文章

  1. linux设定u盘启动,cdlinux u盘启动,教您如何设置
  2. React组件三大属性props state refs以及组件的生命周期
  3. 学计算机独显重要吗,“集显”、“独显”对于普通电脑用户来说还那么重要吗?...
  4. python爬取简历模板_python爬取简历模板
  5. centos linux引导修复_centos 系统引导修复办法
  6. 基数树结构---radix_tree
  7. 数理统计——样本分布
  8. 关于大地测量领域常用的角度知识汇总(方位角,竖直角)
  9. kali linux国内源
  10. katacontainers v2编译