BZOJ 2429 最小生成树 解题报告
来源:互联网 发布:12345打字软件下载 编辑:程序博客网 时间:2024/05/16 15:12
2429: [HAOI2006]聪明的猴子
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
【解题报告】
基本上算是裸题了。。。
代码如下:
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n,m,cnt,tot,mx,ans;int a[505],x[1005],y[1005],fa[1005];struct data{ int x,y,v;}e[500005];int find(int x) { return x==fa[x]?x:fa[x]=find(fa[x]);}bool cmp(data a,data b) {return a.v<b.v;}int main(){ scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); scanf("%d",&m); for(int i=1;i<=m;++i) { fa[i]=i; scanf("%d%d",&x[i],&y[i]); } for(int i=1;i<=m;++i) for(int j=i+1;j<=m;j++) { e[++cnt].x=i;e[cnt].y=j; e[cnt].v=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]); } sort(e+1,e+cnt+1,cmp); for(int i=1;i<=cnt;++i) { int p=find(e[i].x),q=find(e[i].y); if(p!=q) { fa[p]=fa[q]; tot++; if(tot==m-1){mx=e[i].v;break;} } } for(int i=1;i<=n;++i) if(a[i]*a[i]>=mx) ++ans; printf("%d",ans); return 0;}
- BZOJ 2429 最小生成树 解题报告
- BZOJ 1601 [Usaco2008 Oct] 最小生成树 解题报告
- BZOJ 1821 [JSOI 2010] 最小生成树 解题报告
- BZOJ 1682 [Usaco2005 Mar] 最小生成树 解题报告
- 最小生成树——解题报告
- codevs 1078 最小生成树 解题报告
- BZOJ 3754 Tree之最小方差树 解题报告
- bzoj 3144 切糕 最小割 解题报告
- BZOJ 1475 最小割 解题报告
- 最小生成树 prim POJ 2349解题报告
- 最小生成树 POJ 3625Building Roads解题报告
- Hdu 1879 继续畅通工程 最小生成树 解题报告
- Codeforces 827 D 最小生成树+倍增 解题报告
- codevs 1002 搭桥 【最小生成树】解题报告
- 洛谷 1195 口袋的天空 最小生成树 解题报告
- 洛谷 2330 繁忙的都市 最小生成树 解题报告
- 洛谷 1991 无线通讯网 最小生成树 解题报告
- BZOJ 3894 网络流最小割 解题报告
- python入门技巧之特征分析(离散特征(图))
- php_扩展安装
- Android面试-Java基础-异常 IO流
- 从1到n整数中1出现的个数
- Android音视频点/直播模块开发
- BZOJ 2429 最小生成树 解题报告
- Python之创建虚拟环境
- mongoDB与mysql的区别
- 串口的设置
- C++ 多重继承之内存存储
- POJ 3050 Hopscotch 裸广搜
- py-faster-rcnn算法caffe配置,训练及应用到自己的数据集
- 代码注释和编码规范
- Idea GitLab设置远程Remote仓库时显示authentication failed for xxx错误