2429: [HAOI2006]聪明的猴子
2429: [HAOI2006]聪明的猴子
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 448 Solved: 309
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
Source
题解:一个裸的最小生成树,直接求出来之后判断下就是了= =
1 /**************************************************************
2 Problem: 2429
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:396 ms
7 Memory:11976 kb
8 ****************************************************************/
9
10 var
11 i,j,k,l,m,n,mm:longint;
12 b:array[0..2000,1..2] of longint;
13 a:array[0..1000005,1..3] of longint;
14 c,d:array[0..2000] of longint;
15 function max(x,y:longint):longint;inline;
16 begin
17 if x>y then max:=x else max:=y;
18 end;
19 procedure swap(var x,y:longint);inline;
20 var z:longint;
21 begin
22 z:=x;x:=y;y:=z;
23 end;
24 procedure sort(l,r:longint);inline;
25 var i,j,x,y:longint;
26 begin
27 i:=l;j:=r;x:=a[(l+r) div 2,3];
28 repeat
29 while a[i,3]<x do inc(i);
30 while a[j,3]>x do dec(j);
31 if i<=j then
32 begin
33 swap(a[i,1],a[j,1]);
34 swap(a[i,2],a[j,2]);
35 swap(a[i,3],a[j,3]);
36 inc(i);dec(j);
37 end;
38 until i>j;
39 if i<r then sort(i,r);
40 if l<j then sort(l,j);
41 end;
42 function getfat(x:longint):longint;inline;
43 begin
44 if x<>c[x] then c[x]:=getfat(c[x]);
45 exit(c[x]);
46 end;
47 begin
48 readln(m);
49 for i:=1 to m do read(d[i]);
50 readln;l:=0;readln(n);
51 for i:=1 to n do readln(b[i,1],b[i,2]);
52 for i:=1 to n-1 do
53 for j:=i+1 to n do
54 begin
55 inc(l);a[l,1]:=i;a[l,2]:=j;
56 a[l,3]:=(b[i,1]-b[j,1])*(b[i,1]-b[j,1])+(b[i,2]-b[j,2])*(b[i,2]-b[j,2]);
57 end;
58 sort(1,l);
59 for i:=1 to n do c[i]:=i;
60 j:=0;mm:=0;
61 for i:=1 to n-1 do
62 begin
63 repeat
64 inc(j);
65 k:=getfat(a[j,1]);
66 l:=getfat(a[j,2]);
67 until k<>l;
68 mm:=max(mm,a[j,3]);
69 c[k]:=l;
70 end;
71 l:=0;
72 for i:=1 to m do if (d[i]*d[i])>=mm then inc(L);
73 writeln(l);
74 readln;
75 end.
- Visual Studio Code v0.9.1 发布
- (39) 剖析LinkedList / 计算机程序的思维逻辑
- 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密
- 看到那个Edward 了吗?对!其实它是个Python库
- (35) 泛型 (上) - 基本概念和原理 / 计算机程序的思维逻辑
- 将linux下的rm命令改造成mv到指定的目录下
- (36) 泛型 (中) - 解析通配符 / 计算机程序的思维逻辑
- Python优化第一步: 性能分析实践
- Python云计算框架:OpenStack源码分析之RabbitMQ(二)
- 编程获得CPU的主频
- Python多进程并行编程实践:以multiprocessing模块为例
- 由函数clock想到的
- (34) 随机 / 计算机程序的思维逻辑
- 创建和使用Windows静态链接库
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何修改终端中$符号前面的一串名称?
- Alfred 有多强悍,我写了个一键上传图片的 workflow 来告诉你
- Peewee出错:Illegal mix of collations
- 【TOOLS】Linux环境下升级python2.7到python3.6
- 溯源黑帽利用 Web 编辑器漏洞非法植入 SEO 页面事件
- Milvus 查询合并机制
- Django model 层之Models与Mysql数据库小结
- 【010期】JavaSE面试题(十):集合之Map18连环炮!
- 每日打卡 373. 查找和最小的K对数字
- IE11出现"__doPostBack”未定义
- latex()、ploy2sym()、symsum()的妙用
- 性能最佳实践:MongoDB数据建模和内存大小调整
- 节省你生命的一个小技术No.193
- K8S 生态周报| Traefik v2.3.0-rc2 发布
- 如何从 Notion 批量导出 Markdown?