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

[GESP202606 八级] 线网建设题解

思维之路

第一关:建边

  • 最小生成树只可用于给出边的无向图

  • 难点一:只给了点的座标,怎么算边?

    • 思维前置:勾股定理:

      • 我们用(x,y)(x,y)和(x1,y1)(x1,y1)这两个点为例,给(x,y)(x,y)命名为AA,给(x1,y1)(x1,y1)命名为CC。

      • 怎么算边?我们可以用勾股定理。

      • 勾股定理的定义:直角三角形里,两条直角边的平方加起来等于斜边的平方‌,公式:a2+b2=c2a2+b2=c2

      • 我们可以转换一下,推导得:c=a2+b2c=a2+b2​

      • 题目中采用平面直角坐标系,如图:

      • 推广一下:

      • a=x−x1a=x−x1,b=y−yb=y−y

      • 自己试试吧

    • 要注意哦:

      如果两座基站之间的距离不超过给定的整数ll,那么可以修建连接这两座基站的线路,线路长度为基站间的距离。

      还有:边长不能为负,记得abs!

  • 代码片段:

    for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y))<=l){ e[++m]={i,j,sqrt(abs(a[i].x-a[j].x)*abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)*abs(a[i].y-a[j].y))}; } } }
第二关:最小生成树

  • 例题

  • 详见流程图

  • 代码片段:

    sort(e+1,e+1+m,cmp); for(int i=1;i<=n;i++)fa[i]=i; for(int i=1;i<=m;i++){ int x=e[i].x,y=e[i].y; double z=e[i].z; if(find(x)!=find(y)){ fa[find(x)]=find(y); ans+=z; if(++cnt==n-1)break; } } if(cnt==n-1)printf("%.2f\n",ans); else cout<<"Impossible";

代码实现

#include <bits/stdc++.h> #define int long long using namespace std; struct edge{ int x,y; double z; }e[200200]; int n,m,fa[5050],cnt; double ans; struct at{ double x,y; }a[200200]; int find(int x){ if(fa[x]==x){ return x; } return fa[x]=find(fa[x]); } bool cmp(edge p,edge q){ return p.z<q.z; } signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); double l; cin>>n>>l; ans=0,cnt=0,m=0; for(int i=1;i<=n;i++){ cin>>a[i].x>>a[i].y; } for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y))<=l) e[++m]={i,j,sqrt(abs(a[i].x-a[j].x)*abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)*abs(a[i].y-a[j].y))}; } } sort(e+1,e+1+m,cmp); for(int i=1;i<=n;i++)fa[i]=i; for(int i=1;i<=m;i++){ int x=e[i].x,y=e[i].y; double z=e[i].z; if(find(x)!=find(y)){ fa[find(x)]=find(y); ans+=z; if(++cnt==n-1)break; } } if(cnt==n-1)printf("%.2f\n",ans); else cout<<"Impossible"; return 0; }
http://www.jsqmd.com/news/1139835/

相关文章:

  • YOLOv10模型改进-损失函数改进-第89篇:YOLOv10改进策略【损失函数】| Huber Loss损失函数
  • Qt信号槽在使用中避免循环绑定
  • PyTorch 2.0 CIFAR-10 模型优化:3种学习率策略对比,测试集准确率提升至69.78%
  • Python爬虫经典案例第83篇:在线博客平台爬取:掘金数据采集实战
  • CIC研判:数字化越转越重,病根还是在低代码工作流
  • BLIP BLIP-2 超详细入门解析
  • 电商罗盘视频怎么下载?罗盘视频跳转、无水印下载和内容库教程
  • PyTorch nn.LSTM 参数详解与避坑指南:batch_first 等5个关键参数实战解析
  • 如何3秒完成网页图片格式转换:Save Image as Type浏览器扩展完整指南
  • Opus 4.8、GPT-5.5、Gemini 3.1 Pro 测了同一套任务,输赢比你想的复杂
  • 非遗网站平台的设计与实现毕业设计任务书
  • 谷歌 Find Hub 双版本迭代优化软硬件生态
  • TensorFlow 2.10 GPU Windows 终极配置:CUDA 11.2 + cuDNN 8.1 避坑 3 要点
  • 支撑 2500 亿行对话数据:某头部大模型公司如何用 TiDB 托住高频 AI 交互场景
  • 3个关键步骤彻底解决Intel Mac过热问题:Turbo Boost Switcher终极指南
  • MDX-M3-Viewer:游戏模型格式的WebGL解析与可视化引擎
  • 重构石化智能底座——乾元通多链路技术赋能石化生产与数据融合
  • 旧地面翻新
  • Transformer 架构 2023:从 GPT-3 到 Stable Diffusion 的 5 大 AIGC 基石模型对比
  • 运算放大器 PCB 布局 5 大误区解析:从原理图正确到板级失效的根因
  • SSD能效比如何决定大模型本地推理流畅度
  • IDM激活脚本终极指南:5种方法实现永久免费下载管理
  • 计算机毕业设计之基于YOLO11的图像识别的交通信号灯识别
  • 赛博朋克边缘行者2:AI图像生成与本地部署技术实践指南
  • 城市地铁屏蔽门专用安全光幕选型指南
  • 深度解析msvcp140.dll运行原理,配套msvcp140.dll丢失的解决方法分层修复方案
  • Windows下pyenv-win安全审计与防护实战指南
  • 影刀RPA新手教程:定时任务常见问题完全指南——为什么定时任务没有跑起来
  • 月入五万的蓝海赛道,两年做到头部
  • 告别“租房”,置办“家产”:从SEO到GEO,AI时代品牌数字资产的生死重构