Install Air Conditioning HDU - 4756 树形dp

AI训练师三级考证避坑指南|假证辨别+机构套路+OSTA验证 这是最基础的问题,也是最容易忽略的问题。人工智能训练师三级证书本身是有价值的——政府认可的职业技能等级证书、多地紧缺工种补贴、人才引进加分。但正因为有价值,才引来了大量骗子。记住三句话OSTA查不到的证,一分钱都不值声称免考包过的,100%是骗子培训费一次性谈清楚,后续加价直接走人如果你正在考虑考人工智能训练师三级证书,想要从报名到备考到拿证的完整一站式指南,欢迎查看我的付费专栏:📖《人工智能训练师三级·从零到拿证完全指南》99篇系统化内容,覆盖报名、备考、冲刺、拿证全流程。 阅读详情

参考http://blog.youkuaiyun.com/fipped/article/details/39560869

题意:给n个点,现在要使这n个点连通,并且要求代价最小。现在有2个点之间不能直接连通(除了第一个点),求最小代价。


思路:和HDU4126差不多,思路基本借鉴于http://blog.csdn.net/ophunter_lcm/article/details/12030593

别人的代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>

using namespace std;

const int N = 1010;
const int M = 300010;
const int inf = 0x3f3f3f3f;

typedef long long ll;

int pre[N], head[N], flag[N];
int vis[N][N];
double low[N];
double dis[N][N], dp[N][N];

struct node
{
    int x, y;
} a[N];

struct M_node
{
    int to, next;
} e[M];

int n, m, num;
double sum;

void build(int s, int t)
{
    e[num].to = t;
    e[num].next = head[s];
    head[s] = num ++;
}

double Dis(int x1, int y1, int x2, int y2)
{
    return sqrt(1.0 * (x1 - x2) * (x1 - x2) + 1.0 * (y1 - y2) * (y1 - y2));
}

void init()
{
    sum = 0;
    num = 0;
    memset(flag, 0, sizeof(flag));
    memset(vis, 0, sizeof(vis));
    memset(head, -1, sizeof(head));
    memset(dp, 0, sizeof(dp));
}

void prim()
{
    int i, j;
    for(i = 1; i <= n; i ++)
    {
        low[i] = dis[1][i];
        pre[i] = 1;
    }
    flag[1] = 1;
    for(i = 1; i < n; i ++)
    {
        double Min = inf;
        int v;
        for(j = 1; j <= n; j ++)
        {
            if(flag[j] == 0 && low[j] < Min)
            {
                Min = low[j];
                v = j;
            }
        }
        sum += Min;
        vis[pre[v]][v] = vis[v][pre[v]] = 1;
        build(v, pre[v]);
        build(pre[v], v);
        flag[v] = 1;
        for(j = 1; j <= n; j ++)
        {
            if(flag[j] == 0 && low[j] > dis[v][j])
            {
                low[j] = dis[v][j];
                pre[j] = v;
            }
        }
    }
}

double dfs(int cur, int u, int fa)  //用cur更新cur点所在的子树和另外子树的最短距离
{
    double ans = inf;
    for(int i = head[u]; ~i; i = e[i].next) //沿着生成树的边遍历
    {
        if(e[i].to == fa)
            continue;
        double tmp = dfs(cur, e[i].to, u);  //用cur更新的以当前边为割边的两个子树最短距离
        ans = min(tmp, ans);        //以(fa,u)为割边的2个子树的最短距离
        dp[u][e[i].to] = dp[e[i].to][u] = min(tmp, dp[u][e[i].to]);
    }
    if(cur != fa)   //生成树边不更新
        ans = min(ans, dis[cur][u]);
    return ans;
}

int main()
{
    int t, i, j;
    scanf("%d", &t);
    while(t --)
    {
        init();
        scanf("%d%d", &n, &m);
        for(i = 1; i <= n; i ++)
            scanf("%d%d", &a[i].x, &a[i].y);
        for(i = 1; i <= n; i ++)
            for(j = 1; j <= i; j ++)
            {
                dp[i][j] = dp[j][i] = inf;
                if(i == j)
                    dis[i][j] = 0;
                else
                    dis[i][j] = dis[j][i] = Dis(a[i].x, a[i].y, a[j].x, a[j].y);
            }
        prim();
        double ans = sum;
        for(i = 0; i < n; i++)
            dfs(i, i, -1);
        for(i = 2; i <= n; i++)
        {
            for(j = 2; j < i; j++)
                if(vis[i][j])
                    ans = max(ans, sum - dis[i][j] + dp[i][j]);
        }
        printf("%.2lf\n", ans * m);
    }
    return 0;
}


Microsoft Forms功能深度解析:企业数据收集与协作的智能利器 Microsoft Forms是微软365生态中的在线表单工具,支持问卷调查、测验和投票创建,具备拖拽式界面、多题型设计和实时数据分析功能。其核心价值在于易用性、跨平台兼容性以及与Teams、SharePoint等微软服务的深度集成,满足GDPR/HIPAA等合规要求。提供表单创建、权限管理、自动化流程(通过Power Automate)和审计日志等功能,适用于金融、医疗、教育等多行业场景。虽然存在逻辑分支有限等约束,但通过案例证明能显著提升数据收集效率(达70-85%)。使用时需注意许可证配置(Busin 阅读详情

相关推荐

Python自动化车载测试:5分钟搞定CANoe COM接口调用(附完整代码)

本文详细介绍了如何使用Python快速实现CANoe COM接口调用,完成车载测试自动化。通过实战案例展示ECU信号测试框架搭建,包括环境配置、核心架构解析、信号读写封装及多线程安全方案,帮助开发者5分钟内掌握高效测试技巧。

vv45678的博客 1132

hdu 4756 Install Air Conditioning(MST+全边次小树,4级)

Install Air Conditioning Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 174    Accepted Submission(s): 23 Problem Description   

nealgavin的专栏 1443

Oracle集群管理-19.3升级19.18 opatchauto总结(java报错,resume oneoffs缺失目录)

t. (那个认为补丁已经打上了,但是oneoffs目录里面没有。将安装包文件的权限全部改成777.就继续执行了上述命令 ,此时使用opatch lsinv也是报错 ,在正常执行opatchauto apply。1 创建目录,存放补丁包,并赋予权限。于是使用如下命令对补丁进行回滚。

oradbm的博客 1415

MST(prim)+树形dp-hdu-4756-Install Air Conditioning

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4756 题目意思: n-1个宿舍,1个供电站,n个位置每两个位置都有边相连,其中有一条边不能连,求n个位置连通的最小花费的最大值。 解题思路: 和这道题hdu-4126差不多,不过这题不能去掉与供电站相连的边。不同的是这题是一个完全图,求MST时,用kruscal算法的时间复杂度为elg

cc_again的专栏 2212

化学气相沉积CVD工艺中MKS下游排气高速节流阀的国产化替代方案及产品

对标MKS、VAT和CDK等国外公司的下游排气高速节流阀系列产品,本文介绍了相应的国产化替代方案和产品。基于CVD工艺,技术方案将下游流量调节阀变为了下游压力调节阀,并采用分体结构,将调压阀与PID控制器分离,调压阀具备大口径和高速功能,电子气控驱动调压阀快速动作,PID控制器接收真空计信号和控制气控驱动阀,可实现阀门全开时间小于0.1秒。

Shanghai_Eyoung的博客 5259

深入探索前端调试神器vConsole

vConsole作为一款前端调试神器,为前端开发者提供了一个便捷的调试解决方案。通过本文的介绍和示例,相信你已经对vConsole有了更深入的了解。然而,vConsole的功能远不止于此,它还有许多高级用法和技巧等待你去发掘。讨论:你在前端开发中是如何使用vConsole的?你有没有发现vConsole的一些隐藏功能或技巧?欢迎在评论区分享你的经验和见解!💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 8521

HDU - 4008 - Parent and son (树形dp)

HDU - 4008 - Parent and son题意是给出一棵无根树,对于每个询问 (x,y)(x,y) ,输出以 xx 为根的树中, yy 的最小儿子编号和最小后代编号。 我们可以先以 11 为根处理出每个结点的最小/次小儿子编号和最小/次小后代编号。 对于一个询问 (x,y)(x,y) 。如果 yy 的子树大小为 00 ,则没有答案。如果 xx 不是 yy 的子树结点,答案就是原答案。

On the way 567

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4614

hdu4756 最小树+树形dp

题意:       给你一个完全图,让你在上面找到一颗最小树,然后问破坏这个最小树的某一条边后用其他边连接(要求最小)成新的树,然后输出破坏每一条边后最小树中最大的那个. 思路:       先跑出一颗最小树,然后枚举树上的每一条边,当这条边被删除的时候,生成树就被分成了两个集合,然后找到一条最小的能让两个集合相通的替代边,最后输出最大的那个(树形dp优化),下面是我的ac记录

天使也掉毛 1255

Cadence画PCB的傻瓜式教程

1.原理图1)建立元件库2)建立原理图3)在原理图中画好电路图4)利用MENTOR-GRAPHICS-IPC-7351-LP-VIEWER查看元件的封装信息,用pad designer画焊盘,用pcb editor画元件的封装(对照LP_VIEWER),(也可以使用package wizard)5)在原理图中为元件添加封装信息(键入)6)Drc检查7)生成网表2.Pcb1)设置...

tianpu2320959696的博客 1万+

Gazebo手册:【1】gazebo基本操作案例

欢迎来到初学者模块!本模块将引导您了解 Gazebo 的最基本功能。我们将构建一个简单的车辆来演示这些功能。这些教程适用于 Gazebo 新手和/或没有编程或 Linux 经验的人。 每个教程都建立在上一个教程的基础上,因此我们建议您按顺序学习这些教程。 一、何为Gazebo? Gazebo 是一款 3D 动态模拟器,能够准确有效地模拟复杂室内和室外环境中的机器人种群。虽然类似于游戏引擎,但 Gazebo 提供了更高保真度的物理模拟、一套传感器以及用于用户和程序的接口。 1............

gongdiwudu的专栏 2万+

hdu4756(最小生成树最佳替换边)

链接:点击打开链接 题意:给出n个点要求依次删除最小生成树上的边后,求出每次删边后的最小生成树的最大值 代码:#include #include #include #include #include #include using namespace std; const int INF=0x3f3f3f3f; int son[1005],dfs_sort[1005],dfs_num

stay_accept的专栏 1315

【归因】MATLAB实现最佳指纹法(待更新)

简述用于归因分析的最佳指纹法,及其MATLAB实现。

WW、forever的博客 4284

【树形DP】 HDU 4756 Install Air Conditioning

通道 题意:给n个点,现在要使这n个点连通,并且要求代价最小。现在有2个点之间不能直接连通(除了第一个点),求最小代价 思路:先求mst,然后枚举边,对于生成树上的边替换,用树形dp O(N^2)求出每条生成树边的最小替代边。然后替换后的最大值 代码: #include <cmath> #include <queue> #include &lt...

173

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hdu4756 Install Air Conditioning(MST + 树形DP)

题目请戳这里 题目大意:给n个点,现在要使这n个点连通,并且要求代价最小。现在有2个点之间不能直接连通(除了第一个点),求最小代价。 题目分析:跟这题一样样的,唉,又是原题。。先求mst,然后枚举边,对于生成树上的边替换,用树形dp O(N^2)求出每条生成树边的最小替代边。然后替换后的最大值。 详情请见代码: #include #include #include #include

ophunter的专栏 1389

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HDU 4756 Install Air Conditioning(树形dp+MST)

题目链接: HDU 4756 Install Air Conditioning 题意: 给nn个点的二维坐标,要将这nn个点连通,边权就是两点距离,其中00号节点是根,可能会破坏除根之外的任意两点的边(不能建边),要求将这nn个点连通的最坏代价? 数据范围:n≤1000n\leq 1000 分析: 上面的黑体字是因为原题中有这句话: But Tom200 is informe

ramay7 651

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Install Air Conditioning HDU - 4756(最小生成树+树形dp)

Install Air Conditioning HDU - 4756 题意是要让n-1间宿舍和发电站相连 也就是连通嘛 最小生成树板子一套 但是还有个限制条件 就是其中有两个宿舍是不能连着的 要求所有情况中最大的那个 这是稠密图 用kruskal的时间会大大增加 所以先跑一遍prim 跑完之后对最小生成树里面的边去搜索(树形dp)我觉得dp就是搜索(虽然我菜到切不了dp题。) ...

weixin_33720452的博客 137

HDU 4756 Install Air Conditioning(MST + 树形DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4756 题意:给n个点,现在要使这n个点连通,并且要求代价最小。现在有2个点之间不能直接连通(除了第一个点),求最小代价。 思路:和HDU4126差不多,思路基本借鉴于http://blog.youkuaiyun.com/ophunter_lcm/article/details/12030593 ...

Tongqi 926

hdu 4756 Install Air Conditioning (MST+树形dp)

Install Air Conditioning Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 656    Accepted Submission(s): 134 Problem Description

To be what you what to be! 1590

HDU - 4756 Install Air Conditioning(树形DP + 最小生成树)

题目大意:给出N个点的坐标,第0个点是发电站,其他的点都是宿舍,现在要求你求出一个最小生成树 但是有一个问题是, 不知道哪两间宿舍不可以直接相连,所以你要预估一下最小的生成树的权值是多少解题思路:求出最小生成树,然后进行dfs,求出树边割断后,连接两个块的最小值即可一题类似的题HDU 4126 HDU 4126的题解#include <cstdio> #include <cstring> #in

静静地码 616

[HDU 4756] Install Air Conditioning (次小生成树 + 树形DP)

http://www.cnblogs.com/ACMan/archive/2012/10/07/2713690.html http://blog.youkuaiyun.com/diary_yang/article/details/11927109 http://blog.youkuaiyun.com/just_water/article/details/11950623

SIOFive的专栏 344

HDU 4756:Install Air Conditioning (最小生成树最佳替换边,最小生成树+树形dp)

题目翻译: 由于给每个寝室都装了空调,所以要从电站(编号为1)往那些寝室送电。 所以要铺设线路,线路每米的花费为K。给出N个点,的坐标,第一个点 总代表电站的位置,剩余N-1个点是寝室的位置,欲想让费用最小,我们 肯定是求该图的最小生成树,但是由于构成最小生成树的边可能出故障, (与1相连的边不会出故障,因为1是电站,是唯一供电的地方,) 则该图就被分为S,T两个集合,追条删除构成最小

温姑娘的博客 601

hdu 4756 Install Air Conditioning

Prim + 树形dp,南京网络赛的题目。这道题和12年福州现场赛的一道题很类似(hdu 4126 Genghis Khan the Conqueror),替换最小生成树上每一条边(与 0 点相连的边除外),然后分别求次小生成树,求生成树中的最大值。可以先prim求出最小生成树,再用dp求把边u - v 边删去,两颗子树的最短距离,分别替换求值就可以了。 #include #incl

ok_again的专栏 1830

hdu 4756 Install Air Conditioning(2013南京网络赛)

题意就是求MST中删去一条边后,次小生成树最大的那颗。注意题中说了“ there are so many wires between two specific dormitories” 。也就是说与0节点(power plant)相连的MST边是不会出故障的,所以要特殊考虑一下所有MST边都跟0节点相连的情况。 删除MST中某条边后的次小生成树用树形dp解决,传送门 我的理解是:删除MST边之

diary_yang的专栏 2394
上一篇: Codeforces Round #359 (Div. 1) B. Kay and Snowflake dfs
下一篇: 【Codeforces Round 362 (Div 2)D】【树的遍历 概率均分思想】
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值