一眼看去,就是一道MST的模板题。

  然后果断准备跑Kruskal,然后5个TLE。

  Kruskal复杂度对于这个完全图要O(n^2*logn^2),快排就会导致超时。

  然后打了刚学的Prim。朴素O(n^2)卡过。

  Prim的思想很简单,用dis数组来存目前的MST(初始时只有一个节点)到其他点的最小距离,f数组记录是否使用,方法很巧妙。

  总觉得Prim和Dijkstra很相像

  思想像,代码也像。

  CODE

#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int N=;
double dis[N],x[N],y[N],ans;
int n,i,j;
bool f[N];
inline double calc(double a,double b,double c,double d) { return sqrt((a-b)*(a-b)+(c-d)*(c-d)); }
inline double min(double a,double b) { return a<b?a:b; }
int main()
{
scanf("%d",&n);
for (i=;i<=n;++i)
scanf("%lf%lf",&x[i],&y[i]);
for (i=;i<=n;++i)
dis[i]=calc(x[],x[i],y[],y[i]);
memset(f,true,sizeof(f));
f[]=;
for (i=;i<n;++i)
{
double MIN=0x7ffffff;
int k=;
for (j=;j<=n;++j)
if (f[j]&&dis[j]<MIN) MIN=dis[j],k=j;
ans+=MIN; f[k]=;
for (j=;j<=n;++j)
if (f[j]) dis[j]=min(dis[j],calc(x[k],x[j],y[k],y[j]));
}
printf("%.2lf",ans);
return ;
}

Luogu P1265 公路修建的更多相关文章

  1. 洛谷P1265 公路修建

    P1265 公路修建 177通过 600提交 题目提供者该用户不存在 标签图论 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 long long类型赋值-1为什么… p党80的进 为什么不过 ...

  2. 洛谷——P1265 公路修建

    P1265 公路修建 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一 ...

  3. 洛谷P1265 公路修建(Prim)

    To 洛谷.1265 公路修建 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完 ...

  4. P1265 公路修建 洛谷

    https://www.luogu.org/problem/show?pid=1265 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公 ...

  5. P1265 公路修建 最小生成树

    题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮中,每个城市选择一个 ...

  6. P1265 公路修建 (prim)

    题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一"行路难"的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮 ...

  7. 洛谷P1265 公路修建题解

    题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一轮中,每个城市选择一个 ...

  8. 洛谷P1265 公路修建——prim

    给一手链接 https://www.luogu.com.cn/problem/P1265 这道题本质上就是最小生成树,题目描述就是prim的思想 TIP:注意稠密图和稀疏图的区别 #include&l ...

  9. 【luogu P1111 公路修建】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1111 考察并查集,运用kruskal的思想很好做.注意几个小问题即可. #include<iostre ...

随机推荐

  1. 网络基础 Windows控制台下Ftp使用简介

    Windows控制台下Ftp使用简介 by:授客 QQ:1033553122 测试环境: ftp服务器所在主机ip:172.25.75.2 ftp用户目录:F:\ftp   C:\Users\laif ...

  2. 给你一个全自动的屏幕适配方案(基于SW方案)!—— 解放你和UI的双手

    Calces系列相关文章:Calces自动实现Android组件化模块构建 前言 屏幕适配一直是移动端开发热议的问题,但是适配方案往往在实际开发的时候会和UI提供的设计稿冲突.本文主要是基于官方推荐的 ...

  3. Android 裁剪人脸

    人脸裁剪类 public final class FaceCj { private static BitmapFactory.Options BitmapFactoryOptionsbfo; priv ...

  4. MySQL写入用户微信名

    很简单的需求,将用户微信名写入MySQl即可,但是测试过程中却遇到了问题,微信名中的emoji写入数据库失败.解决步骤如下 1.了解utf8mb4 MySQL从5.5.3版本开始支持utf8mb4编码 ...

  5. JS数组分组

    //1.找出数组中相同的元素 getRepeatNum(arr) { let obj = {}; for (let i = 0, len = arr.length; i < len; i++) ...

  6. CSS| 框模型-margin

    CSS margin 属性 设置外边距的最简单的方法就是使用 margin 属性. margin 属性接受任何长度单位,可以是像素.英寸.毫米或 em. margin 可以设置为 auto.更常见的做 ...

  7. 万能Makefile,前戏做足项目做起来才顺畅。

    # 获取要编译的源码 SRC :=$(wildcard *.cpp) OBJ :=$(patsubst %.cpp,%.o,$(SRC)) # 编译参数 CC :=g++ STD :=-std=c++ ...

  8. C#中的console类输入输出功能

    Console.WriteLine() 直接将括号内内容显示在控制台界面中(相当于C语言printf()吧) Console.ReadLine()获取控制台用户自己输入的内容(功能和C语言scanf( ...

  9. Html引入百度富文本编辑器ueditor

    在日常工作用,肯定有用到富文本编辑器的时候,富文本编辑器功能强大使用方便,我用的是百度富文本编辑器,首先需要下载好百度编辑器的demo, 然后创建ueditor.html文件,引入百度编辑器,然后在h ...

  10. Linux 下安装 Tomcat 出现拒绝访问的情况

    此外也无法调用 java -version 查看版本号 ./shutdown 时:提示找不到 JDK 的某个文件夹 ./startup 时:却启动正常 访问 8080 端口时,显示拒绝访问 解决方法: ...