换根dp
SC.ldxcaicai
我很菜=_=
展开
-
2018.07.22 洛谷P2986 伟大的奶牛聚集(树形dp)
传送门 给出一棵树,树有边权和点权,若选定一个点作为中心,这棵树的代价是所有点权乘上到根的距离的和。求代价最小。解法:一道明显的换根dpdpdp,如果枚举根的话时间复杂度O(n2)O(n2)O(n^2)直接上天。看来只能通过某些方法来优化时间复杂度啊。我们知道求出以111为根的代价是可以O(n)O(n)O(n)递推的。然后这样能否推出111的儿子的代价呢?显然是可以的,对于以vvv为根的...原创 2018-07-22 22:16:13 · 171 阅读 · 0 评论 -
2018.10.04 NOIP模拟 航班(tarjan+树形dp)
描述L因为业务繁忙,经常会到处出差。因为他是航空公司的优质客户,于是某个航空公司给了他一个优惠券。他可以利用这个优惠券在任何一个国家内的任意城市间免费旅行,当他的路线跨国才会产生费用。L有一个航空公司的价格表与航线。而且每个城市出发都能到所有的城市,2个城市间可能有不止一个航班,一个国家内的2个城市间一定有不同的路线,但是不同国家的城市间只有一条路线。L想知道从每个城市出发到产生费用最多的城市...原创 2018-10-11 23:44:21 · 163 阅读 · 0 评论 -
2018.10.15 NOIP训练 水流成河(换根dp)
传送门换根dp入门题。貌似李煜东的书上讲过?不记得了。先推出以1为根时的答案。然后考虑向儿子转移。我们记f[p]f[p]f[p]表示原树中以ppp为根的子树的答案。g[p]g[p]g[p]表示把根换成ppp时整棵树的答案。于是有g[v]=f[v]+min(g[p]−min(e[i].c,f[v]),e[i].c)g[v]=f[v]+min(g[p]-min(e[i].c,f[v]...原创 2018-10-15 10:36:20 · 568 阅读 · 0 评论 -
2018.10.26 NOIP训练 数数树(换根dp)
传送门换根dpdpdp傻逼题好像不好码啊。考虑直接把每一个二进制位拆开处理。先dfsdfsdfs出每个点到1的异或距离。然后分类讨论一波:如果一个点如果当前二进制位到根节点异或距离为1,那么对于当前二进制位到这个点距离为000的就是到根节点距离为111的,如果当前二进制位到这个点距离为111的就是到根节点距离为000的。如果一个点如果当前二进制位到根节点异或距离为1,那么对于当前二进...原创 2018-10-26 18:29:16 · 428 阅读 · 0 评论 -
codeforces 1092F. Tree with Maximum Cost(换根dp)
传送门sbsbsb树形dpdpdp题。题意简述:给出一棵边权为1的树,允许选任意一个点vvv为根,求∑i=1ndist(i,v)∗ai\sum_{i=1}^ndist(i,v)*a_i∑i=1ndist(i,v)∗ai的最大值。直接统计出子树的权值和转移就行了。代码:#include<bits/stdc++.h>#define ri register intusin...原创 2018-12-19 23:28:36 · 335 阅读 · 0 评论