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

[洛谷-P1364] 医院设置

普通的floyd就不讲了,如果数据量到了1e5以上,这就是一道树的重心的变式,求带权的重心。或者说用树型dp或dfs来优化最小值的查找。最终时间复杂度 \(O(n)\) 。以下代码是第一篇题解的风格变化+注释。

#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn=1e4+10;// 题目数据小随便开
constexpr int maxm=2e4+10;
constexpr int INF=LONG_LONG_MAX>>1;typedef struct edge
{int to,nex;
}edge;edge edges[maxn];
int enums,heads[maxn];
int wi[maxn],siz[maxn],tal[maxn];
// siz[i]-以i为根的权值和
// tal[i]-以i为根的权值*路长的和
int ans=INF;void add_edge(int x,int y)
{edges[++enums]={y,heads[x]};// 非常的压抑heads[x]=enums;
}void dfs(int u,int fa,int dep)
{// 初始化siz和tal[1]siz[u]=wi[u];for(int i=heads[u];i;i=edges[i].nex){if(edges[i].to!=fa){dfs(edges[i].to,u,dep+1);//直到没有孩子siz[u]+=siz[edges[i].to];// 加上子树的权值}}tal[1]+=wi[u]*dep;
}void dp(int u,int fa)
{// 从 u到 v,对于子树来说:距离-1,总贡献 -siz[v]。// 对其他点:距离+1,总贡献+siz[1]-siz[v]for(int i=heads[u];i;i=edges[i].nex){if(edges[i].to!=fa){tal[edges[i].to]=tal[u]-2*siz[edges[i].to]+siz[1];dp(edges[i].to,u);}}ans=min(ans,tal[u]);
}signed main()
{int n;int a,b;scanf("%lld",&n);for(int i=1;i<=n;++i){scanf("%lld%lld%lld",&wi[i],&a,&b);if(a){add_edge(i,a);add_edge(a,i);}if(b){add_edge(i,b);add_edge(b,i);}}dfs(1,0,0);dp(1,0);printf("%lld\n",ans);return 0;
}
http://www.jsqmd.com/news/47855/

相关文章:

  • 实现五折交叉验证进行模型训练 -
  • KingbaseES:为银行核心系统迁移开启新航道 - 详解
  • 用 ffmpeg 命令去除视频的重复帧、剪视频、修改视频尺寸 - 详解
  • 20232422 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 毕业论文写作全流程:从选题到答辩的完整指南
  • html空间如何添加滚动条
  • 实用指南:Jenkins 持续集成与部署指南
  • 2025年11月DR耐油橡胶热缩管,氟橡胶热缩管,防滑花纹热缩管厂家最新推荐:耐老化性能实测榜单
  • 2025年11月DR耐油橡胶热缩管,线缆标识热缩管,防滑花纹热缩管厂商推荐:耐油等级与使用寿命解析
  • [游记]CSP 2025
  • 11.22题解
  • 电梯调度问题的三次迭代
  • 【minimap2】一定要注意组合参数
  • 3-数据库
  • 4-java
  • 重构高阶智驾:天瞳威视以国产芯片,解锁Robotaxi平民化路径 - 实践
  • 1-计算机网络
  • 实用指南:MCU定点计算深度解析:原理、技巧与实现
  • 2-操作系统
  • html空间如何添加图片
  • html空间可以设置边框吗
  • 【SpringBoot从初学者到专家的成长23】利用SpringBoot构建高效的Web应用-拥抱你的第一个SpringBoot项目
  • PyCharm,Run Configurations,Python interpreter下拉框会显示哪些地方的python.exe
  • Deepseek大模型结合Chrome搜索爬取2025AI投资趋势数据 - 指南
  • 聚焦GeoAI!6本遥感地学好刊全解析,助你精准投稿
  • call 与 delegatecall - all-in
  • 20232417 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • Trick——字符串
  • 2022年春季研究资助计划征集技术提案
  • BLOG-1-电梯调度算法