洛谷P1131 时态同步
题意:
给一个n点的树,每条边都有边权,问从根出发需要增加多少长度,使得最终的儿子到根的距离是一样的
思路:
上来一个思路wa了3次,看完题解之后,又一次豁然开朗……

orz
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define inf 0x3f3f3f3f
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=5e5+;
struct node{
int to,next,w;
}a[maxn<<];
int n,s,cnt,tot,head[maxn],maxx[maxn];
ll ans;
il void add(int u,int v,ll w){
a[tot].w=w;a[tot].next=head[u];
a[tot].to=v;head[u]=tot++;
}
void dfs(int u,int qian){
for(it i=head[u];i!=-;i=a[i].next){
int v=a[i].to,w=a[i].w;
if(v==qian){continue;}
dfs(v,u);
maxx[u]=max(maxx[u],maxx[v]+w);
}
for(it i=head[u];i!=-;i=a[i].next){
int v=a[i].to,w=a[i].w;
if(v==qian){continue;}
ans+=(ll)(maxx[u]-w-maxx[v]);
}
}
int main(){
scanf("%d%d",&n,&s);
tot=;mem(head,-);ans=;
for(it i=;i<n;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);add(v,u,w);
}
dfs(s,);
printf("%lld\n",ans);
return ;
}
洛谷P1131 时态同步的更多相关文章
- 洛谷 P1131 BZOJ 1060 [ZJOI2007]时态同步
		题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ... 
- 洛谷 P1131 [ZJOI2007]时态同步
		P1131 [ZJOI2007]时态同步 题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号.电路板的各个节点由若干 ... 
- 洛谷 P1131 [ ZJOI 2007 ] 时态同步 —— 树形DP
		题目:https://www.luogu.org/problemnew/show/P1131 记录 x 子树内同步的时间 f[x],同步所需代价 g[x]: 直接转移即可,让该儿子子树与其它儿子同步, ... 
- [洛谷P1131][ZJOI2007]时态同步
		题目大意:给你一棵树,每条边有边权,要求增加一些边的边权,使得根节点到每个叶子节点的距离相等,求出最少共增加多少边权. 题解:树形$DP$,对于每个点,如果它到它的子树中的叶子节点距离不同,一定要在这 ... 
- 洛谷 P1131 [ZJOI2007]时态同步 树形DP
		题目描述 分析 我们从根节点开始搜索,搜索到叶子节点,回溯的时候进行维护 先维护节点的所有子节点到该节点最大边权(边权为叶子节点到同时到达它所需要时间) 然后维护答案,答案为最大边权减去所有到子节点的 ... 
- 洛谷  P1131  选择客栈
		题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ... 
- 【Luogu】P1131时态同步(树形DP)
		题目链接 甚矣吾衰也!这么简单的DP我都不会了 太恐怖了 树形DP,从子树里选出时间最长的来,剩下的调到这个最长时间即可. #include<cstdio> #include<cct ... 
- BZOJ1060或洛谷1131 [ZJOI2007]时态同步
		BZOJ原题链接 洛谷原题链接 看上去就觉得是一道树形\(\mathtt{DP}\),不过到头来我发现我写了一个贪心.. 显然对越靠近根(记为\(r\))的边进行加权贡献越大,且同步的时间显然是从根到 ... 
- 【洛谷1131】【ZJOI2007】时态同步
		题面 题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两 ... 
随机推荐
- java异常处理课后作
			1.动手动脑 源码 import javax.swing.*; class AboutException { public static void main(String[] a) { ... 
- shell内置命令和外部命令的区别
			内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留 ... 
- redis缓存处理机制
			1.redis缓存处理机制:先从缓存里面取,取不到去数据库里面取,然后丢入缓存中 例如:系统参数处理工具类 package com.ztesoft.iotcmp.utils; import com.e ... 
- Jarvis OJ - 栈系列部分pwn - Writeup
			最近做了Jarvis OJ的一部分pwn题,收获颇丰,现在这里简单记录一下exp,分析过程和思路以后再补上 Tell Me Something 此题与level0类似,请参考level0的writeu ... 
- JavaScript HTML DOM 关系层级(父子兄弟姐妹关系)
			通过 HTML DOM,您能够使用节点关系来导航节点树. DOM 节点 根据 W3C HTML DOM 标准,HTML 文档中的所有事物都是节点: 整个文档是文档节点 每个 HTML 元素是元素节点 ... 
- 1.3、WebRTC架构
			文章导读:本文的讲解的是webrtc系统架构,每个人都要Get到这些知识:第一.了解webrtc架构分层:第二.对每层技术有一个清晰的认知.学完本节内容可以为我们后面学习核心API起到至关重要的作用, ... 
- python的setup和teardown
			关于python unittest ① setup():每个测试函数运行前运行② teardown():每个测试函数运行完后执行③ setUpClass():必须使用@classmethod 装饰器, ... 
- C. Polygon for the Angle 几何数学
			C. Polygon for the Angle 几何数学 题意 给出一个度数 ,问可以实现的最小的n的n边形是多少 思路 由n边形的外角和是180度直接就可以算出最小的角是多少 如果给出的度数是其最 ... 
- EAC3 mantissa quantization(VQ & GAQ)
			EAC3基于hebap来决定mantissa的quantizer. hebap如下: mantissa 使用VQ(vector quantization) 和GAQ(gain adaptive qua ... 
- get_class和get_called_class的区别
			get_class () 获取当前调用方法的类名get_called_class() 获取静态绑定后的类名 class Foo{ public function test() { v ... 
