当前位置: 首页 > news >正文

Luogu题解:P13427 [COCI 2020/2021 #2] Odasiljaci

题意

题意也是很简单,就是找一个距离\(n\),其中\(x\times2\)可以将每一个信号塔连接起来,并输出最小的\(n\)

解释:

Q:为什么是用\(x\times2\)的距离就可以连起来?

A:因为信号在过了两个信号塔距离的一半,就会被另一个信号塔接收到。

注意: 不一定要直接相连,可以\(x_1\)连接\(x_2\)\(x_2\)连接\(x_3\)

思路

  1. 将每一个信号塔找到离它最近的信号塔找到,将所有信号塔连成一串。如图:
  2. 再将每条线段的一半算出来,求出最大值并输出。

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
struct node{int x, y;
}arr[N];
double dis(node a, node b){return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}
struct edge{int u, v;double d;
}e[N * N];
int cnt;
bool cmp(edge a, edge b){return a.d < b.d;
}
int father[N];
void init(){for(int i = 1; i < N; i++)father[i] = i;
}
int find(int x){if(x != father[x])x = find(father[x]);return father[x];
}
bool bing(int a, int b){int x = find(a);int y = find(b);if(x != y){father[y] = father[x];return 1;}return 0;
}
double kruskal(int p, int s, int t){init();double sum = 0;int cnt = 0;for(int i = 0; i < t; i++){if(bing(e[i].u, e[i].v)){cnt++;sum = max(sum, e[i].d);if(cnt == p - 1){return sum;}}}return 0;
}
int main(){int s, q;cin >> q;for(int i = 1; i <= q; i++){cin >> arr[i].x >> arr[i].y;} for(int i = 1; i <= q; i++){for(int j = i + 1; j <= q; j++){e[cnt++] = {i, j, dis(arr[i], arr[j])};}}sort(e, e + cnt, cmp);cout << fixed << setprecision(7) << kruskal(q, s, cnt)/2;return 0;
}
http://www.aitangshan.cn/news/607.html

相关文章:

  • post提交数据到服务器应该使用textarea还是div editable
  • Python 库 DuckDB
  • OpenCV入门(16):图像滤波(平滑处理)
  • Luogu题解:P13594 『GTOI - 1A』Bath
  • G. ABBC or BACB
  • 第十一届能源材料与电力工程学术会议(ICEMEE 2025)
  • JetBrains WebStorm 2025.2 (macOS, Linux, Windows) - JavaScript 和 TypeScript IDE
  • 牛逼!花了9天,开发了一款一站式智能测试平台:STP!
  • 第八届IEEE机电一体化与计算机技术工程国际学术会议(MCTE 2025)
  • VMware Avi Load Balancer 30.2.4 - 多云负载均衡平台
  • VMware NSX 4.2.3 - 网络安全虚拟化平台
  • JetBrains IDE 2025.2 (macOS, Linux, Windows) - 跨平台开发者工具
  • JetBrains IntelliJ IDEA 2025.2 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE
  • 题解:AT_agc033_e [AGC033E] Go around a Circle
  • 【经管文化主题|高录用快检索】第七届经济管理与文化产业国际学术会议
  • 多线程
  • JetBrains CLion 2025.2 (macOS, Linux, Windows) - C 和 C++ 跨平台 IDE
  • 快消巨头杨掌柜:用纷享销客CRM实现渠道数字化升级
  • Omnissa Unified Access Gateway 2506 - 远程安全的应用程序访问
  • Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
  • 第七届经济管理与文化产业国际学术会议(ICEMCI 2025)
  • cookie,session,localstorage,sessionstorage一次讲清楚
  • Maven jar上传Nexus教程
  • 7.1组合计数
  • 浅学 FHQ
  • DeepCompare文件深度对比软件:智能文本对比与差异统计功能完全指南
  • 单据上采购数量按3个单位分别显示数量
  • 致敬2025年还在写博客的你
  • MyBatis-Plus
  • 概率论的基础