问题:
有一个树形结构的电路板,其中有一个激发器(根节点),电流从根节点出发,沿着树边传播到所有叶子节点(终止节点)。每条边有一个传播时间,我们需要通过增加某些边的传播时间,使得所有叶子节点同时接收到电流。
解法:
贪心:
从叶子节点开始向上处理
对于每个节点,计算从其到其子树中叶子节点的最大路径长度
对于节点的每个子节点,将它们的路径长度补齐到这个最大值
向上传递时,加上当前节点到父节点的边权
算法:
使用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;
}
P1131题解
张小明
前端开发工程师
快速掌握Faster Whisper:Whisper模型训练加速终极指南
快速掌握Faster Whisper:Whisper模型训练加速终极指南 【免费下载链接】faster-whisper plotly/plotly.js: 是一个用于创建交互式图形和数据可视化的 JavaScript 库。适合在需要创建交互式图形和数据可视化的网页中使用。特点是提供了一种简单、易用的 APIÿ…
BluetoothKit终极指南:快速构建iOS和macOS蓝牙应用
BluetoothKit终极指南:快速构建iOS和macOS蓝牙应用 【免费下载链接】BluetoothKit 项目地址: https://gitcode.com/gh_mirrors/blu/BluetoothKit 想要在iOS和macOS平台上快速开发强大的蓝牙应用吗?BluetoothKit正是你需要的终极解决方案…
游戏深度魔法:Flame引擎视差滚动技术的实战解析
游戏深度魔法:Flame引擎视差滚动技术的实战解析 【免费下载链接】flame 项目地址: https://gitcode.com/gh_mirrors/fla/flame 在2D游戏开发的世界里,有一个能够瞬间提升游戏品质的"魔法"——视差滚动技术。这种看似简单的视觉效果&am…
Nevergrad无梯度优化:5个简单步骤掌握终极优化工具
Nevergrad无梯度优化:5个简单步骤掌握终极优化工具 【免费下载链接】nevergrad 项目地址: https://gitcode.com/gh_mirrors/ne/nevergrad Nevergrad是一个功能强大的无梯度优化平台,专门为解决传统梯度方法难以处理的复杂优化问题而设计。无论你…
5分钟上手AI网页自动化:零代码操作实战指南
5分钟上手AI网页自动化:零代码操作实战指南 【免费下载链接】browser-use 它可以让AI像人类一样浏览网页、点击按钮、填写表单、甚至处理复杂的任务,比如自动填写简历、或者从网页中提取信息。源项目地址:https://github.com/browser-use/bro…
JBoltAI 4系列:开启企业智能架构的全新篇章
在AI应用逐渐从探索阶段迈向规模化部署的当下,企业面临着构建可持续演进且具备核心掌控力智能体系的重大挑战。碎片化的工具与项目制开发模式,正将企业拖入成本高昂、难以协同的“智能孤岛”困境。JBoltAI 4系列的发布,无疑为企业智能化建设带…