最小生成树 2429: [HAOI2006]聪明的猴子
BZOJ 2429: [HAOI2006]聪明的猴子
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 877 Solved: 566
[Submit][Status][Discuss]
Description
Input
第1行为一个整数,表示猴子的个数M(2<=M<=500);
第2行为M个整数,依次表示猴子的最大跳跃距离(每个整数值在1--1000之间);
第3行为一个整数表示树的总棵数N(2<=N<=1000);
第4行至第N+3行为N棵树的坐标(横纵坐标均为整数,范围为:-1000--1000)。
(同一行的整数间用空格分开)
Output
包括一个整数,表示可以在这个地区的所有树冠上觅食的猴子数
Sample Input
1 2 3 4
6
0 0
1 0
1 2
-1 -1
-2 0
2 2
Sample Output
HINT
对于40%的数据,保证有2<=N <=100,1<=M<=100
对于全部的数据,保证有2<=N <= 1000,1<=M=500
/*
思路:这个题目还是比较明显的,因为最小生成树的性质满足最大边最小,“能所有树冠上觅食”,所以一定这个猴子一定可以经过最小生成树的最大边,因为没有其他更小的距离来把全部的树都走一遍了。
只需记录最小生成树的最大边,统计有多少只猴子能够跨越这个最大边即可。
*/
/*kruskal算法过程:建完边之后,把所有边从小到大拍一个序,按这个顺序往最小生成树里面加边,用并查集维护关系。*/
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
#include<cstdio>
#define N 1005
#define M 505
int t,n,m,dist[M],father[N];
struct Zb{
int x,y;
}zb[N];
struct Edge{
int u,v;
double w;
bool operator<(Edge Q)
const{return w<Q.w;}
}edge[N*N];
double ans;
void input()
{
scanf("%d",&m);
for(int i=;i<=m;++i)
{
scanf("%d",&dist[i]);
}
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d%d",&zb[i].x,&zb[i].y);
}
}
void add_edge(int a,int b)
{
++t;
edge[t].u=a;edge[t].v=b;
edge[t].w=sqrt((zb[a].x-zb[b].x)*(zb[a].x-zb[b].x)+(zb[a].y-zb[b].y)*(zb[a].y-zb[b].y));
}
void build_edge()
{
for(int i=;i<=n;++i)
for(int j=i+;j<=n;++j)
{
add_edge(i,j);
}
}
int find(int x)
{
return(father[x]==x?x:father[x]=find(father[x]));
}
void kruskal()
{
for(int i=;i<=n;++i) father[i]=i;
sort(edge+,edge+t+);
int num=;
for(int l=;l<=t;++l)
{
int x1=find(edge[l].u);
int y1=find(edge[l].v);
if(x1==y1) continue;
num++;
father[y1]=x1;
if(num==n-)
{
ans=edge[l].w;
break;
}
}
}
int main()
{
input();
build_edge();
kruskal();
int ret=;
for(int i=;i<=m;++i)
{
if(dist[i]>=ans) ret++;
}
printf("%d",ret);
return ;
}
最小生成树 2429: [HAOI2006]聪明的猴子的更多相关文章
- 2429: [HAOI2006]聪明的猴子
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 448 Solved: 309[Submit][Statu ...
- BZOJ 2429: [HAOI2006]聪明的猴子( MST )
水题, 求MST即可. -------------------------------------------------------------------------------- #includ ...
- bzoj 2429: [HAOI2006]聪明的猴子 (最小生成树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2429 思路:就是找最小生成树最大的一条边,最小生成树的性质,最后加入的那条边就是最大的 实现 ...
- BZOJ 2429: [HAOI2006]聪明的猴子
Description 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地 表还是被大水淹没着,部分植物的树冠露在水面上.猴子不会游泳,但跳跃能力比较 ...
- BZOJ2429[HAOI2006]聪明的猴子[最小生成树 kruskal]
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 896 Solved: 575[Submit][Statu ...
- 最小生成树——[HAOI2006]聪明的猴子
题目:[HAOI2006]聪明的猴子 描述: [题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳 ...
- 洛谷—— P2504 [HAOI2006]聪明的猴子
P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...
- 洛谷——P2504 [HAOI2006]聪明的猴子
P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...
- cogs 1310. [HAOI2006]聪明的猴子
1310. [HAOI2006]聪明的猴子 ★ 输入文件:monkey.in 输出文件:monkey.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在一个热带 ...
随机推荐
- gene框架文档 - 路由类 gene_router
路由类 Gene\Router 介绍 Gene\Router 是gene框架的核心类之一,本框架区别于其他常见框架的最大地方就是独特.强大.简单的路由定义等.路由强大灵活,支持回调.类方法:支持res ...
- 强大的修改数据库修改语句ALTER TABLE(一)[20160712]
今天开始的时间比昨天晚,其实午休的时间是差不多的,只是起来后稍微看了一点新闻,10分钟时间就没有了,所以要养成一个好习惯还真不容易,另外就是工作时间少看新闻,太浪费时间. 昨天在执行一个alter S ...
- linux shell 编程
1,获取命令执行的结果,字符串拼接(脚本最常使用的功能) cmd_result=$(date +%Y%b%d) //使用变量获取命令执行的结果 或者 cmd_result=`date ...
- IE11出现“__doPostBack未定义”的解决办法。
方法一:浏览器设置成兼容模式,这个是超级掩耳盗铃方法,你就没想过其他人也会出这个问题. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/565 ...
- 为阿里云存储开发的PHP PEAR 包:Services_Aliyun_OSS
阿里云开放存储服务 OSS:用于存储图片.apk等静态资源,使用阿里云带宽,不占用开发者服务器带宽. 阿里云官方PHP SDK: http://aliyun.com/product/oss/#help ...
- Visual Studio添加dll程序集引用操作步骤
Visual Studio 中添加引用的操作: 在“解决方案资源管理器”中,先右击项目图标,在弹出菜单选择“添加引用...” 然后在弹出的窗口中选择所要添加的选项,点击确定就可以了. 原文:http: ...
- 【使用 DOM】使用 Window 对象
1. 获取 Window 对象 可以用两种方式获得Window对象.正规的HTML5方式是在Document对象上使用defaultView属性.另一种是使用所有浏览器都支持的全局变量window . ...
- DOM性能小记
在使用DOM操作时,同样的效果用不同的方式来实现,性能方面也会有很大的差异.尤其在移动式设备上,资源本来就很有限,一旦DOM写不好的话操作就会非常卡顿.这个周末,就写个DOM性能小记吧.错漏之处,望多 ...
- javascript-this,call,apply,bind简述1
最近在系统的学习面向对象方面的知识,遇到的最大拦路虎就数this的指向,call,apply,bind函数的使用,单独抽出一天时间把这几个烦人的家伙搞定,去学习更深入的内容. 首先介绍一下this的一 ...
- 桥牌笔记:Skill Level 4 D8
西拿黑桃K.A后,转攻小方块. 看来只有一个小红桃失张了.飞方块没有必要冒险.但将牌分布4-0时会有点麻烦.