题解 P2504 【[HAOI2006]聪明的猴子】
这道题要坑死人啊。。。
第一次做40分,其他RE,改了一次之后就变成20分了。。。
究其原因,是有一个数组(dis)开的太小了,于是最后本蒟蒻就随手开了个五百万,然后,就AC了。
看到有一篇题解说求距离最好不开根,经本蒟蒻实验,开不开根并不影响结果,全看个人喜好。
本蒟蒻还加了一个快读,其实也没有必要,只是第一次RE的时候不小心看成了TLE,为了缩短时间才写的。
总体来说,这是一道Kruskal的题废话。
需要注意的一个点在于题目所求的与裸题有差异。
其余的好像问题也不大,只要不像本蒟蒻一样视力不好就不会错得太离谱。
总而言之,AC代码如下(并查集find函数带优化):
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- inline int qread() {
- int x = , f = ;
- char c = getchar();
- while(c < '' || c > '') {
- if(c == '-') f = -;
- c = getchar();
- }
- while(c >= '' && c <= '') {
- x = x * + (c - '');
- c = getchar();
- }
- return x * f;
- }
- const int maxn = ;
- int m, n, ans = , cnt = ;
- int f[maxn], leap[maxn], x[maxn], y[maxn];
- struct node {
- int x, y;
- int val;
- }dis[];
- bool cmp(node a, node b) {
- return a.val < b.val;
- }
- int find(int x) {
- int r = x;
- while(r != f[r]) r = f[r];
- int i = x, j;
- while(f[i] != r) {
- j = f[i];
- f[i] = r;
- i = j;
- }
- return r;
- }
- void merge(int x, int y) {
- x = find(x);
- y = find(y);
- if(x != y) f[y] = x;
- }
- double dt(int x1,int x2,int y1,int y2) {
- return sqrt(pow(double(x1 - x2), ) + pow(double(y1 - y2), ));
- }
- int main() {
- cin >> m;
- for(int i = ; i <= m; i++) cin >> leap[i];
- cin >> n;
- for(int i = ; i <= n; i++) cin >> x[i] >> y[i];
- for(int i = ; i <= maxn - ; i++) f[i] = i;
- for(int i = ; i <= n; i++)
- for(int j = i + ; j <= n; j++) {
- dis[++cnt].x = i;
- dis[cnt].y = j;
- dis[cnt].val = dt(x[i], x[j], y[i], y[j]);
- }
- sort(dis + , dis + cnt + , cmp);
- for(int i = ; i <= cnt; i++)
- if(find(dis[i].x) != find(dis[i].y)) {
- ans = dis[i].val;
- merge(dis[i].x, dis[i].y);
- }
- int sum = ;
- for(int i = ; i <= m; i++) if(leap[i] >= ans) sum++;
- cout << sum;
- }
题解 P2504 【[HAOI2006]聪明的猴子】的更多相关文章
- 洛谷—— P2504 [HAOI2006]聪明的猴子
P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...
- 洛谷——P2504 [HAOI2006]聪明的猴子
P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...
- 洛谷 P2504 [HAOI2006]聪明的猴子
洛谷 P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水 ...
- 洛谷P2504 [HAOI2006]聪明的猴子题解
题目 记录悲伤 已知猴子的数量以及猴子跳的最大距离 已知数的数量以及树的坐标 最小生成树 每两棵树之间的距离需要枚举来计算 算出最大值之后再与n只猴子进行比较记录答案 需要注意 在使用最小生成树的时候 ...
- P2504 [HAOI2006]聪明的猴子
思路 最小生成树中最大的边,边权最小 所以这题就变成最小生成树的板子了,跳跃距离大于最大边权的猴子就是可行的 代码 #include <cstdio> #include <algor ...
- 洛谷P2504 [HAOI2006]聪明的猴子
#include<bits/stdc++.h> using namespace std; ; ; int n,m,k,ans; double Max; int monkey[maxn]; ...
- 2429: [HAOI2006]聪明的猴子
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 448 Solved: 309[Submit][Statu ...
- BZOJ2429[HAOI2006]聪明的猴子[最小生成树 kruskal]
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 896 Solved: 575[Submit][Statu ...
- 最小生成树 2429: [HAOI2006]聪明的猴子
BZOJ 2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 877 Solved: 566[Submit][ ...
- 最小生成树——[HAOI2006]聪明的猴子
题目:[HAOI2006]聪明的猴子 描述: [题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳 ...
随机推荐
- 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...
- Ubantu 14.04下安装高版本cmake
Ubantu14.04 下自带的cmake版本比较低(默认为2.8),这里我们从源码编译高版本cmake: 先卸载电脑上安装的cmake (如何已安装的话): sudo apt-get autorem ...
- ZOJ 2883 Shopaholic【贪心】
解题思路:给出n件物品,每买三件,折扣为这三件里面最便宜的那一件即将n件物品的价值按降序排序,依次选择a[3],a[6],a[9]----a[3*k] Shopaholic Time Limit: 2 ...
- C语言中的作用域、链接属性与存储属性
C语言中的作用域.链接属性与存储属性 一.作用域(scope) 代码块作用域 表示{}之间的区域,下例所示,a可以在不同的代码块里面定义. #include<stdio.h> int ma ...
- Django REST framework 自定义字段
自定义字段 继承 Field 类 覆盖父类中的方法 to_representation() 调用该方法将初始数据类型转换为基本的可序列化数据类型 to_internal_value() 调用该方法将原 ...
- 【Computer Vision】图像单应性变换/投影/仿射/透视
一.基础概念 1. projective transformation = homography = collineation. 2. 齐次坐标:使用N+1维坐标来表示N维坐标,例如在2D笛卡尔坐标 ...
- C语言运行时数据结构
段(Segment): 对象文件/可执行文件: SVr4 UNIX上被称为ELF(起初"Extensible Linker Format", 现在"Executable ...
- 关闭linux终端进程
[root@linux-node1 ~]# w 22:16:45 up 24 days, 24 min, 2 users, load average: 0.28, 0.17, 0.15 USER TT ...
- Centos7 安装 opencv
Centos7 安装 opencv CentOS Linux release 7.2.1511 (Core) 1.安装依赖 yum install https://dl.fedorap ...
- BNUOJ 34990 Justice String
Justice String Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java cla ...