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

AT_abc409_e [ABC409E] Pair Annihilation

AT_abc409_e [ABC409E] Pair Annihilation

赛时没开longlong挂了。

思路

首先我们可以把这棵树转化为一颗有根树,且所有电子的都朝根节点移动。

那么接下来我们就需要选择一个最优的树根。

考虑换根dp。

但是可以发现换根时答案其实是没有变化的。

我们设 f i f_i fi 表示以 i i i 为根的子树电子全部集中到 i i i 所耗费的能量, g i g_i gi 表示以 i i i 为根的子树电子全部集中到 i i i 后的电子数量。

图片

如图所示,我们设一号节点与二号节点之间的距离为 v v v,当我们要把根从 1 换到 2 时,相当于将原本要从 2 号节点移动到 1 号节点的电子留在 2 号,其他电子在 1 号节点,此时只有 1 号节点和 2 号节点存在电子。

我们设此时 1 号节点的电子数量(此处负电子数量算作负数)为 a a a,2 号节点的电子数量为 b b b,那么有 a + b = 0 a+b=0 a+b=0 ∣ a ∣ = ∣ b ∣ |a|=|b| a=b,那么此时无论我们把电子从 2 号节点移动到 1 号节点还是从 1 号节点移动到 2 号节点对答案产生的贡献是不变的,所以我们可以直接以任意节点为根跑dfs求出答案。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,a[100010],f[100010],g[100010];
struct N{ll y,v;
}; 
vector<N> e[100010];
void dfs(int x,int xfa){f[x]=0;g[x]=a[x];//g要初始化为当前节点电子数量 for(N y:e[x])if(y.y!=xfa){dfs(y.y,x);//遍历子节点 f[x]+=f[y.y]+abs(g[y.y])*y.v;//更新f g[x]+=g[y.y];//更新g }
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1,x,y,v;i<n;i++){cin>>x>>y>>v;e[x].push_back({y,v});//建树 e[y].push_back({x,v});}dfs(1,0);//dfs求f,g数组 cout<<f[1];//此处我们以1为根,所以输出f[1] return 0;
}
http://www.xdnf.cn/news/938143.html

相关文章:

  • 三级流水线是什么?
  • OpenJudge | 大整数乘法
  • 5.子网划分及分片相关计算
  • python中使用LibreHardwareMonitorLib.dll获取电脑硬件信息~~【不用同步打开exe文件】
  • Docker知识五:服务编排(Docker Compose概念)
  • [M132][Part_1] chromium codelab
  • JDK 17 新特性
  • three.js 零基础到入门
  • GeoBoundaries下载行政区划边界数据(提供中国资源shapefile)
  • 重复文件管理 一键清理重复 图片 文档 免费 超轻量无广告
  • 机器学习 [白板推导](四)[降维]
  • SpringBoot自定义EndPoint实现线程池动态管理
  • 6月8日day48打卡
  • 动态工作流:目标结构来自外部数据集
  • 华为OD机试-正整数到Excel编号之间的转换-逻辑分析(Java 2025 A卷 100分)
  • 【LeetCode 热题100】字符串 DP 三连:最长回文子串、最长公共子序列 编辑距离(力扣5 / 1143/ )(Go语言版)
  • 【P2P】低延迟直播(尤其是 P2P 实时分发)常用的 x264 编码参数示例
  • Prompt工程学习之自我一致性
  • 6.8 note
  • Python学习——排序
  • Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用
  • 3.机器学习-分类模型-线性模型
  • 《深入理解 Nacos 集群与 Raft 协议》系列四:日志复制机制:Raft 如何确保提交可靠且幂等
  • 《Spring Boot 微服务架构下的高并发活动系统设计与实践》
  • CQF预备知识:Python相关库 -- SciPy 安装
  • 会计-合并-5- 处置交易在合报与个报会计处理
  • 由汇编代码确定switch语句
  • 第13次01:广告及商品数据呈现
  • (LeetCode 每日一题)386. 字典序排数(递归、深度优先搜索dfs || 递推)
  • 动态生成 PV 的机制:使用 NFS-Client Provisione