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

2<=N <= 1000,1<=M=500

 1 /**************************************************************
 2     Problem: 2429
 3     User: Hammer_cwz_77
 4     Language: C++
 5     Result: Accepted
 6     Time:524 ms
 7     Memory:6704 kb
 8 ****************************************************************/
 9
10 #include<cstdio>
11 #include<algorithm>
12 #include<cmath>
13 using namespace std;
14
15 #define dist(x,y) (b[x][0]-b[y][0])*(b[x][0]-b[y][0])+(b[x][1]-b[y][1])*(b[x][1]-b[y][1])
16
17 inline int read()
18 {
19     int x=0,f=1;char c=getchar();
20     while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
21     while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
22     return x*f;
23 }
24
25 struct edge{
26 int x,y,v;
27 }e[500505];
28 int f[1005],n;
29 int a[505],b[1001][2];
30 int cnt;
31 int m,ANS,ans;
32
33 inline bool cmp(edge a,edge b)
34 {
35     return a.v<b.v;
36 }
37
38 inline int find(int x)
39 {
40     return f[x]==x?x:f[x]=find(f[x]);
41 }
42
43 int main()
44 {
45     for(int i=1;i<=1000;i++)
46         f[i]=i;
47     m=read();
48     for(int i=1;i<=m;i++)
49         a[i]=read();
50     n=read();
51     for(int i=1;i<=n;i++)
52         b[i][0]=read(),b[i][1]=read();
53     for(int i=1;i<=n;i++)
54         for(int j=i+1;j<=n;j++)
55             e[++cnt]=(edge){i,j,dist(i,j)};
56     sort(e+1,e+cnt+1,cmp);
57     for(int i=1;i<=cnt;i++)
58         if(find(e[i].x)!=find(e[i].y))
59         {
60             ans=e[i].v;
61             f[find(e[i].y)]=find(e[i].x);
62         }
63     for(int i=1;i<=m;i++)
64         if(a[i]*a[i]>=ans)
65             ANS++;
66     printf("%d\n",ANS);
67 }

转载于:https://www.cnblogs.com/Hammer-cwz-77/p/8511288.html

BZOJ 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 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  7. [BZOJ 2523][Ctsc2001]聪明的学生(递归)

    Description 一位教授逻辑学的教授有三名非常善于推理且精于心算的学生A,B和C.有一天,教授给他们三人出了一道题:教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且 ...

  8. BZOJ 1051: [HAOI2006]受欢迎的牛

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 7120  Solved: 3779 [Submit][S ...

  9. bzoj 1049: [HAOI2006]数字序列(DP+DP)

    1049: [HAOI2006]数字序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1848  Solved: 801 [Submit][Sta ...

  10. bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3335  Solved: 1852 [Submit][ ...

最新文章

  1. NOI2011 道路修建
  2. php网站首页点击更多时获取数据,jQuery+PHP实现点击按钮加载更多,不刷新页面加载更多数据!附:可用源码+demo...
  3. 半导体行业必将再火十年!两大趋势成发展新动能
  4. mpc5774时钟监控寄存器_单片机如何才能不死机之内外部时钟
  5. 存储知识课堂(二):磁盘读写磁头揭秘
  6. python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...
  7. Flutter ScrollController not attached to any scroll views 异常
  8. 用Welford算法实现LN的方差更新
  9. IoT协议LwM2M MQTT与CoAP
  10. 操作Windows文件夹时,弹出文件夹正在使用,操作无法完成【解决】
  11. CSU2020期中测试题(2)WOWO爬水井
  12. 计算机箱图和结构,新手训练营:揭秘“元五金”机箱结构
  13. √【西班牙语español学习】字母 发音 节奏语调
  14. 新浪微博首席架构师漫谈微博底层架构
  15. 各大互联网厂面试题(付详细答案,持续更新中...)
  16. 服务器上训练深度学习模型anaconda+cuda+cudnn+pycharm
  17. 前端埋点和后端埋点能分开使用吗?【数据埋点介绍】
  18. 8月1日起,香港超10家主流银行开户全部豁免管理费
  19. c语言表达式判断,[判断C语言算术表达式的合法性]
  20. CCRC信息安全服务资质--应急处理

热门文章

  1. java将bmp文件转为jpg_在PHP中将BMP转换为JPG
  2. 汇集各种 webservice工厂,快递,ip,天气,身份证,手机,翻译,火车时刻,股票,邮编,二维码,公交,ISBN,ICP 查询接口 API
  3. matlab保存pgm图形,matlab读写pgm文件
  4. 在python中读取.pgm格式图像
  5. d3中为每个rect元素绑定带数据的点击事件
  6. 记录在训练深度学习算法过程中遇到的问题及解决办法。持续更新中....
  7. jQuery推箱子小游戏
  8. 1000+常用Python库大全,太实用了!
  9. 后渗透权限维持的方法
  10. 科研突破:非宁静无以致远