
树链剖分
linkfqy
A link to FQY.
展开
-
树链剖分-总结
【树链剖分是啥?】树链剖分是用于将树上操作转化为序列操作的一种算法。在信息学竞赛中有着广泛的应用。 比如:给定一棵树以及各点的权值,每次操作给出两个点,把这两点之间路径上的所有点的权值改变或者求和。 这种题目就是典型的树链剖分,转化成序列操作之后用线段树维护即可。【概念】我们把子树x的节点个数记为siz[x]。 那么对于任意节点i,定义它的儿子中siz[]最大的为i的“重儿子”(H_son[i原创 2017-04-08 18:38:41 · 1346 阅读 · 3 评论 -
【最短路径树+可并堆/树链剖分】BZOJ1576 [Usaco2009 Jan]安全路经Travel
题面在这里此题最重要的思想就是建立“最短路径树”。 何为最短路径树?就是最短路经过的所有点和边构成的一棵树(以前竟然没有发现这个东西)考虑不经过最短路的最后一条边,其实就是把点x到父亲的边去掉 那么剩下的最短路径必定是这样的: 由一条不在树上的边(u,v)连接x子树和其余部分,则路径为1~u~v~x 可以发现,整个过程只走了一次不在树上的边,这样就保证了答案必定最优 这个方案的答案为:ds原创 2017-05-11 20:52:10 · 1104 阅读 · 3 评论 -
【树链剖分+线段树】BZOJ1036 [ZJOI2008]树的统计Count
题面在这里典型的树链剖分……不解释了 不懂的可以看这里#include<cstdio> #include<algorithm> using namespace std; const int maxn=30005,maxe=60005; int n,q; int son[maxe],nxt[maxe],lnk[maxn],tot; void add(int x,int y){ son[++t原创 2017-04-08 20:17:10 · 515 阅读 · 1 评论 -
【模板】树链剖分
树链剖分,很实用的图论技巧 可以维护树上路径系列问题参考博客:树链剖分-总结原创 2017-07-10 20:01:34 · 419 阅读 · 0 评论 -
【树链剖分+树状数组区间修改区间和】BZOJ4034(LOJ#2125)[HAOI2015]树上操作
题面在这里还可以双倍经验其实就是树链剖分裸题……只要注意到树链剖分序就是DFS序就可做了示例程序:原创 2017-10-16 14:33:55 · 922 阅读 · 0 评论 -
【二分+LCA差分乱搞】BZOJ4326(UOJ150) NOIP2015 运输计划
题面在这里还可以双倍经验其实就是要让用时最长的那条边最短容易想到二分答案。将所有长度大于答案的路径取交集,显然只能在这些边中选择一条来建造虫洞当然是选择最长的那条边然后差分乱搞一下就得到边集了非常方便,不用打树链剖分示例程序:原创 2017-10-11 19:52:11 · 890 阅读 · 0 评论