ZJOI/Lnsyoj158/Luogu1131时态同步(树形DP水题)【做题报告】

rt,是一道很水的树形DP

题目描述

给出一棵有根树,每条边有一个通过时间。你可以进行一次“操作”,使得某条边的通过时间增加一秒。 你需要让根节点到每个叶节点的所需时间都相等,且“操作”次数最少。 叶节点被定义为除根节点外所有只与一个点相连的节点。

输入格式

第一行一个正整数NN,表示树上的节点个数。 第二行一个正整数SS,表示根节点的编号。 接下来N1N−1行每行三个数a[i],b[i]a[i],b[i]和t[i]t[i],表示第ii条边连接节点a[i]a[i]和b[i]b[i],通过时间为t[i]t[i]。

输出格式

输出一行一个非负整数,表示最小“操作”次数。

样例一

input

3
1
1 2 1
1 3 3

output

2

样例解释

对第一条边进行两次“操作”即可。

限制与约定

对于30%的数据,n510

对于60%的数据,n5000

对于100%的数据,n5105t[i]106

时间限制1s

空间限制256MB

这道题思路就是用一个num[i]以i为根的子树改成了什么边权,dp[i]存储操作数即答案;

然后转移就很简单了

dp[now]+=dp[to];
num[now]=max(num[now],num[to]+edge[i].val);

dp[now]+=num[now]-(num[to]+edge[i].val);

对就酱,就这么水,但是我并没有很快就想到,

还有还有要开longlong!!

这道题其实没有省选难度,很适合练手;

猜你喜欢

转载自www.cnblogs.com/Qin-Wei-Kai/p/10037487.html