题面

显然的一个建模是,每个叶子对应一个权值,代表比最晚的叶子早了多久,然后我们要做的就是给每条边赋上值,使得每个叶子到根的路径上的所有边权值和等于叶子的权值。

我们贪心的想一想,必然是离根越近的边赋值多的情况比较优(在保证同步的情况下),因为离根越近的边影响的叶子会更多。

而对于两个节点 u,v,我们必须要在lca(u,v)以下的边中赋值使得 u和v同步,因为再往上的边对u和v的影响就相同了。

于是根据以上两点,可以得到一个比较简单的dp。

f[x]表示以x为根的子树所有叶子同步的最小代价,转移很简单,留给大家想了w

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=500005;int hd[N],ne[N*2],to[N*2],val[N*2],num,n,S,mx[N];
ll f[N];inline void add(int x,int y,int z){to[++num]=y,ne[num]=hd[x],hd[x]=num,val[num]=z;
} inline int read(){int x=0; char ch=getchar();for(;!isdigit(ch);ch=getchar());for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x;
}void dfs(int x,int fa){for(int i=hd[x];i;i=ne[i]) if(to[i]!=fa)dfs(to[i],x),mx[x]=max(mx[x],mx[to[i]]+val[i]);for(int i=hd[x];i;i=ne[i]) if(to[i]!=fa)f[x]+=f[to[i]]+mx[x]-mx[to[i]]-val[i];
}int main(){n=read(),S=read();for(int i=1,u,v,w;i<n;i++) u=read(),v=read(),w=read(),add(u,v,w),add(v,u,w);dfs(S,0);printf("%lld\n",f[S]);return 0;
}

  

转载于:https://www.cnblogs.com/JYYHH/p/11258074.html

[ZJOI2007] 时态同步相关推荐

  1. P1131 [ZJOI2007] 时态同步

    P1131 [ZJOI2007] 时态同步 题意: 有一颗树,有一个点是激发器,从这个点开始可以产生一个激励电流,通过导线传向每一个它所连接的节点,经过一个边的花费为w[i],你有一个道具,每用一次可 ...

  2. ZJOI2007时态同步

    描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都 ...

  3. 1060. [ZJOI2007]时态同步【树形DP】

    Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...

  4. P1131 [ZJOI2007]时态同步

    传送门 DP 题目讲得很清楚"对于电路板的任何两个节点,都存在且仅存在一条通路". 所以电路板是一颗树 题目要求叶子节点时态一致 如果从根开始枚举时间肯定超时 考虑反过来 从叶子节 ...

  5. 洛谷 1131 [ZJOI2007] 时态同步

    题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ...

  6. [luogu1131][bzoj1060][ZJOI2007]时态同步【树形DP】

    传送门:https://www.luogu.org/problemnew/show/P1131 题目大意 给你一棵树,每条边有边权,要求增加一些边的边权,使得根节点到每个叶子节点的距离相等,求出最少共 ...

  7. [ZJOI2007] 时态同步(拓扑序)

    problem 洛谷链接 solution 结论:使用道具的导线深度越浅越好. 显然,如果有两个终止节点都需要增加 xxx,那么在他们的 lca\text{lca}lca 到根的路径中任意一条边增加 ...

  8. [ZJOI2007]时态同步 树形DP

    题意:给定一棵N个节点的无根树,每条边都有一个权值V,选取其中一个点作为关键点,你可以任意增加某条边的权值,求使得从关键点出发,到任意一个叶子节点的距离都相同所需要增加的权值和. 数据范围: 对于40 ...

  9. LuoguP1131 [ZJOI2007]时态同步

    注意开longlong 参考神仙题解 自己的风格: #include<cstdio> #include<cstring> #include<algorithm> # ...

最新文章

  1. Science:穿梭于个体大脑与群体大脑之间探索社会智能
  2. 《Swift 权威指南》——第6章,第6.7节常量和变量参数
  3. python十进制转八进制_怎样用python进行二进制,八进制,十进制转换
  4. 【Netty】Netty 核心组件 ( ChannelHandlerContext )
  5. Java打乱牌的算法_Leetcode 384. 打乱数组 (洗牌算法)
  6. 里程碑!我的github排名进入前100名!
  7. SAP 电商云 Spartacus UI 如何在应用程序里捕捉到成功下单的事件
  8. 支付宝解释 2019 年账单总额较高;腾讯 QQ 回应新功能可显示对方实时电量;Python 2.7 结束支持 | 极客头条...
  9. Linux安装rabbitMQ
  10. SCA-IOT2050 连接至阿里云IOT平台,并通过阿里云IOT控制PLC
  11. 工业互联网(一):工业互联网的发展背景
  12. 华为快应用支持广告变现,加速商业化进程
  13. 深入理解Java虚拟机——加载和存储指令
  14. 我的理想计算机应用作文,我的理想当一名程序员作文
  15. 关于LINUX系统netterm终端登陆乱码问题。
  16. 机器学习——贝叶斯网(bayesian Network)一
  17. 中彩双色球彩票软件 红球预测专家 多特软件
  18. Qt判断文件夹路径、文件是否存在不存在则创建
  19. 2023.0329MySQL数据库
  20. TD8655芯片手册详解

热门文章

  1. Effective C++ 条款11:在operator=中处理自我赋值
  2. 配置zentaophp
  3. javascript 学习教程
  4. Java进程占用CPU资源过多分析
  5. 图像连通域标记算法研究
  6. 简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想
  7. js 字符ascii码转换函数
  8. JS性能分析(测试代码运行时间)
  9. 学习vim 从常用按键开始
  10. javascript --- 对象的方式体验链式调用