【BZOJ2429】聪明的猴子
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2429
比较简单的一道题目。。。
从一棵树出发蹦到其他所有树,实际上,把n-1条边就可以将这n个点连通,而最小生成树的最大权值又是所有生成树中最小的,因此我们需要构造一棵最小生成树,然后将m个猴子的跳跃距离和MST的最大边权比较,统计答案即可。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include <cstdio> 2 #include <cmath> 3 #include <algorithm> 4 5 using namespace std; 6 7 const int maxm = 505, maxn = 1e3 + 5; 8 9 int monkey[maxm], treex[maxn], treey[maxn]; 10 11 struct Edge { 12 int u, v; 13 double w; 14 bool operator < (const Edge& rhs) const { 15 return w < rhs.w; 16 } 17 } edge[maxn * maxn / 2]; 18 19 inline int pw2(int x) { 20 return x * x; 21 } 22 23 inline double dis(int i, int j) { 24 return sqrt(pw2(treex[i] - treex[j]) + pw2(treey[i] - treey[j])); 25 } 26 27 int m, n, eid, fa[maxn]; 28 29 int dj_find(int i) { 30 if (i == fa[i]) return i; 31 else return fa[i] = dj_find(fa[i]); 32 } 33 34 inline void dj_merge(int a, int b) { 35 fa[dj_find(a)] = dj_find(b); 36 } 37 38 inline double kruskal() { 39 for (int i = 1; i <= n; ++i) fa[i] = i; 40 sort(edge + 1, edge + eid + 1); 41 int cnt = 0; 42 for (int i = 1; i <= eid; ++i) { 43 int u = edge[i].u, v = edge[i].v, w = edge[i].w; 44 if (dj_find(u) != dj_find(v)) { 45 dj_merge(u, v); 46 if (++cnt == n - 1) return w; 47 } 48 } 49 return edge[eid].w; 50 } 51 52 int main() { 53 scanf("%d", &m); 54 for (int i = 1; i <= m; ++i) scanf("%d", &monkey[i]); 55 scanf("%d", &n); 56 for (int i = 1; i <= n; ++i) scanf("%d%d", &treex[i], &treey[i]); 57 for (int i = 1; i < n; ++i) 58 for (int j = i + 1; j <= n; ++j) { 59 edge[++eid].u = i; 60 edge[eid].v = j; 61 edge[eid].w = dis(i, j); 62 } 63 int ans = 0; 64 double me = kruskal(); 65 for (int i = 1; i <= m; ++i) 66 if (monkey[i] >= me) ++ans; 67 printf("%d", ans); 68 return 0; 69 }
AC代码
转载于:https://www.cnblogs.com/Mr94Kevin/p/9903053.html
【BZOJ2429】聪明的猴子相关推荐
- BZOJ 2429: [HAOI2006]聪明的猴子【最小生成树】
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MB Description 在一个热带雨林中生存着一群猴子,它们以树上的果子为生 ...
- bzoj 2429: [HAOI2006]聪明的猴子(最小生成树)
2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1570 Solved: 902 [Submit][St ...
- P2504 [HAOI2006]聪明的猴子 题解
P2504 [HAOI2006]聪明的猴子 题解 题目 链接 字面描述 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 思路 代码实现 题目 链接 https://ww ...
- [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)
性质:最小生成树上任意两点间的最大边权,一定是这两点间所有路径的最大边权中最小的.证明显然. 1 #include<cstdio> 2 #include<cstring> 3 ...
- 洛谷p2504 HAOI2006 聪明的猴子
[题目描述] 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着, 猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的部分植物 ...
- 有多少游客被峨眉山的猴子亲过脸?
来源|不相及研究所 ID|buuuxiangji 作者|发财金刚 不少游客都是去过峨眉山之后,才发现网上的传言是真的,那里的灵猴比山顶的普贤能更快还愿. 单身的去祈求姻缘,还没等下山,初吻就没了. 即 ...
- python猴子分桃问题_用python实现【五猴分桃】问题
转载链接:https://blog.csdn.net/cy309173854/article/details/78296839 据说"五猴分桃"问题最先是由大物理学家狄拉克提出来的 ...
- 用ChatGPT讲一个关于猴子的故事
今天让ChatGPT编了一个小猴子的故事,效果还不错. 首先设置目标: Goal 1: 讲一个关于猴子的故事 Goal 2: 童话故事 Goal 3: 寓言 Goal 4: 讲给小朋友听的 Goal ...
- python猴子分桃_用python实现【五猴分桃】问题
转载链接:https://blog.csdn.net/cy309173854/article/details/78296839 据说"五猴分桃"问题最先是由大物理学家狄拉克提出来的 ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
最新文章
- 通俗理解并行性和并发性的区别
- TC的handle绿了……菜鸟表示泪流满面
- 中原大学 php,中原大学php全集视频教程
- android setContentView处理流程
- 2019中国(黄石)工业互联网创新发展大会将于11月召开
- 【华为云技术分享】云图说|应用编排服务AOS,助力应用上云自动化
- jQuery页面滚动右侧浮动导航切换
- Centos7 搭建 Socks 服务
- bigemap中下载边界_BIGEMAP地图下载器-全能版
- ubuntu linux修改ip地址命令,永久修改ubuntu系统MAC和IP地址的方法命令
- Monocular Depth Estimation UsingLaplacian Pyramid-Based Depth Residuals翻译
- linux服务器之间文件传输scp
- 用Excel做饼图的一点技巧
- 趁阳光正好,趁微风不噪。趁花儿还未开到荼蘼。
- 关于如何连接网络打印机
- 思科交换机冗余星形设计,附带sw1核心交换机配置
- html(h5)页面实现微信js分享
- 360浏览器下载文件成功但文件异常问题
- springboot 通过javaCV 实现mp4转m3u8 上传oss
- iOS启动优化之——如何使用Xcode Log、App Launch、代码来计算启动时间 Launch Time