洛谷P2504 [HAOI2006]聪明的猴子
来源:互联网 发布:淘宝联盟怎么走返利 编辑:程序博客网 时间:2024/05/22 14:57
题目描述
在一个热带雨林中生存着一群猴子,它们以树上的果子为生。昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上。猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的不同树冠上来回穿梭,以找到喜欢吃的果实。
现在,在这个地区露出水面的有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 460 01 01 2-1 -1-2 02 2
3
说明
【数据规模】
对于40%的数据,保证有2<=N <=100,1<=M<=100
对于全部的数据,保证有2<=N <= 1000,1<=M=500
感谢@charlie003 修正数据
最小生成树裸题。。。
附代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>#define MAXM 510#define MAXN 1010using namespace std;int n,m,k=1,a[MAXM],fa[MAXN];struct node1{double x,y;}c[MAXN];struct node2{int u,v;double w;}b[MAXN*MAXN];inline int read(){int date=0,w=1;char c=0;while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();}return date*w;}bool cmp(const node2 &x,const node2 &y){return x.w<y.w;}int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}void uniun(int x,int y){x=find(x);y=find(y);if(x!=y)fa[y]=x;}void kruskal(){double maxn=0;int s=0,ans=0;for(int i=1;i<=k&&s<n-1;i++)if(find(b[i].u)!=find(b[i].v)){uniun(b[i].u,b[i].v);maxn=max(maxn,b[i].w);s++;}for(int i=1;i<=m;i++)if(a[i]>=maxn)ans++;printf("%d\n",ans);}int main(){m=read();for(int i=1;i<=m;i++)a[i]=read();n=read();for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=n;i++){c[i].x=read();c[i].y=read();for(int j=1;j<i;j++){b[k].u=i;b[k].v=j;double x=(c[i].x-c[j].x)*(c[i].x-c[j].x)+(c[i].y-c[j].y)*(c[i].y-c[j].y);b[k].w=sqrt(x);k++;}}k--;sort(b+1,b+k+1,cmp);kruskal();return 0;}
- 洛谷P2504 [HAOI2006]聪明的猴子
- BZOJ2429 聪明的猴子 (洛谷P2504)
- 2429: [HAOI2006]聪明的猴子
- 2429: [HAOI2006]聪明的猴子
- bzoj2429: [HAOI2006]聪明的猴子
- 2429: [HAOI2006]聪明的猴子
- BZOJ2429 :[HAOI2006]聪明的猴子
- 【bzoj2429】[HAOI2006]聪明的猴子
- 2429: [HAOI2006]聪明的猴子 (生成树)
- BZOJ2429: [HAOI2006]聪明的猴子 kruskal
- [bzoj2429][HAOI2006]聪明的猴子 kruskal
- BZOJ 2429: [HAOI2006]聪明的猴子
- bzoj2429 [HAOI2006]聪明的猴子(prim)
- BZOJ 2429: [HAOI2006]聪明的猴子|最小生成树kruskal
- 2429: [HAOI2006]聪明的猴子 最小生成树
- 【BZOJ2429】[HAOI2006]聪明的猴子【最小生成树】
- [瓶颈生成树] BZOJ 2429 [HAOI2006]聪明的猴子
- bzoj 2429: [HAOI2006]聪明的猴子 并查集
- redis(12)——哨兵的配置
- php 微信公众号开发 api接口调用
- mongodb部署分片集群
- JAVA集合类汇总
- 集成融云的一些使用心得
- 洛谷P2504 [HAOI2006]聪明的猴子
- 什么是tensorflow
- Nginx详细安装部署教程(一)
- Hibernate关系映射一对一
- 关于vs2013版试用期结束后如何激活的一些经验总结
- linux常用命令
- Markdown在线预览
- 解决ListView与SwipeRefreshLayout滑动冲突的问题
- 在浏览器中使用百度地图的定位服务获得经纬度