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

P1131题解

问题:
有一个树形结构的电路板,其中有一个激发器(根节点),电流从根节点出发,沿着树边传播到所有叶子节点(终止节点)。每条边有一个传播时间,我们需要通过增加某些边的传播时间,使得所有叶子节点同时接收到电流。
解法:
贪心:
从叶子节点开始向上处理
对于每个节点,计算从其到其子树中叶子节点的最大路径长度
对于节点的每个子节点,将它们的路径长度补齐到这个最大值
向上传递时,加上当前节点到父节点的边权
算法:
使用BFS或DFS建立树结构(因为N很大,需要避免递归深度过大)
通过拓扑排序(从叶子到根)处理节点
对于每个节点:
找到所有子节点中的最大f[y]+w(即最大路径长度)
将所有子节点的路径长度补齐到这个最大值
当前节点的f[x]=这个最大值
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=500010;
int h[N],v[N<<1],nxt[N<<1],cnt,d[N<<1];
long long res,f[N];
int q[N],fa[N];
void add(int x,int y,int z)
{
v[++cnt]=y;
d[cnt]=z;
nxt[cnt]=h[x];
h[x]=cnt;
}
int main()
{
int n,st;
scanf("%d%d",&n,&st);

for(int i=1;i<n;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
int l=0,r=0;
q[0]=st;
fa[st]=0;
while(l<=r)
{
int x=q[l++];
for(int i=h[x];i;i=nxt[i])
{
int y=v[i];
if(y==fa[x]) continue;
fa[y]=x;
q[++r]=y;
}
}
for(int i=r;i>=0;i--)
{
int x=q[i];
long long mx=0;
for(int j=h[x];j;j=nxt[j])
{
int y=v[j],w=d[j];
if(y==fa[x]) continue;
f[x]=max(f[x],f[y]+w);
}
for(int j=h[x];j;j=nxt[j])
{
int y=v[j],w=d[j];
if(y==fa[x]) continue;
res+=f[x]-(f[y]+w);
}
}
printf("%lld\n",res);
return 0;
}

http://www.rkmt.cn/news/93985.html

相关文章:

  • 栈:数据结构中的 “线性管家”—— 从理论基础到统计领域实践应用
  • BoringNotch安装配置教程:将MacBook凹口变为动态音乐控制中心
  • 26、第三方集群解决方案及相关技术解析
  • 为什么视频生成稀疏注意力做不好?中科院自动化所最新提出稀疏注意力纠偏新范式
  • 吐血整理,性能测试的左移右移+性能基线实践,详细分析...
  • 【Qt开源项目】— ModbusScope-day 2
  • P2746题解
  • 企业级AI路由网关:解锁多模型智能调度的未来
  • LOOT完整使用指南:游戏模组加载顺序优化利器
  • 【URP】Unity[后处理]色差ChromaticAberration
  • Aurora UI 安装配置终极指南
  • SoFixer:专业修复内存dump的So文件工具完全指南
  • 完整教程:深度学习:Mini-Batch 梯度下降(Mini-Batch Gradient Descent)
  • 少儿编程考试路径规划:考级与竞赛时间如何平衡?
  • UG NX工程制图时,常见会出现哪些异常问题
  • 【渲染优化】动态调整虚拟列表刷新率:让代码学会“偷懒“
  • 《深入 Ascend C 编程:从零构建高性能 AI 算子(上)—— 基础架构与矩阵乘法实战》
  • IIoT 内容接口契约化工具JSON、OPC UA和Sparkplug B 优缺点对比分析
  • NCT与GESP哪个更好?线上监考与线下考点的便利性对比
  • 20251213
  • 【Java毕设全套源码+文档】基于Java的横向课题信息管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 戴森球计划FactoryBluePrints终极指南:3步打造高效星际工厂
  • AI写论文工具排行榜:9个优选方案,覆盖开题到终稿全流程
  • windows著名漏洞——Zerologon(零登录)
  • 20251213给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配CTP触摸屏FT5X06
  • 快速排序:10分钟掌握高效算法精髓
  • 北京雅思培训机构综合评测与选择指南 - 品牌测评鉴赏家
  • 机器学习:基于python租房推荐系统 预测算法 协同过滤推荐算法 房源信息 可视化 机器学习-线性回归预测模型 Flask框架(源码+文档)✅ - 详解
  • Astrofy:快速构建现代化个人作品集的免费开源模板
  • 如何快速掌握THC-Hydra:网络安全新手的完整指南