DFS序
Spy97
这个作者很懒,什么都没留下…
展开
-
Jamie and Tree codeforces 916E
题目大意:给出一棵树以及每个结点的权值,初始时根为1。有3种操作:一是将根换为x;二是给出两个节点u,v,把包含这两个点的最小子树中每个节点权值加上x;三是查询以u为根的权值和。题解:不考虑换根时,需要的算法是裸的模板线段树+dfs序+LCA,考虑到换根,我们不必真的换,只需要对操作2和3进行分类讨论。对于第一种操作,直接将根换一下即可。对于第二种操作,设t为(u,v)的LCA,分为两大种情况,一...原创 2018-04-06 02:30:54 · 290 阅读 · 3 评论 -
HDU 6393
题意:一个n个点,n条边的图,2中操作,1是将某条边的权值更改,2是询问两点的最短距离。题解: 由于n个点,n条边,所以是树加一个环,将环上的边随意取出一条,就是1颗树,以取出的边的一个端点为根,建立有根树。虚线就是取出的边。红色为环上的边。对于更改边的权值的操作,用dfs序+区间修改点查询的树状树组维护。对于询问最短路的操作,用LCA分类解决。假设询问的两点是x、...原创 2018-08-15 00:07:06 · 336 阅读 · 0 评论 -
2019牛客暑期多校第八场 Inner World
题意一开始n棵树,每棵树只有一个根节点,标号为1。多次操作,每次在区间 [l,r][l,r][l,r] 的树中的结点 uuu 下增加一个结点 vvv ,多次询问,问区间 [l,r][l,r][l,r] 的树的结点 uuu 的子树的大小求和题解肯定不能模拟建树了题目说增加的结点 vvv 是互不相同的,所以可以建成一棵树,在结点加一个区间,表示在 [l,r][l,r][l,r] 中才存在这一...原创 2019-08-12 10:21:33 · 319 阅读 · 0 评论 -
2019 ICPC 上海网络赛 Lightning Routing I
题目链接题意一颗树,动态修改边权,询问某个点到树上最远点的距离题解最远点一定是树的直径的端点之一所以问题就是动态维护树的直径考虑用线段树维护dfs序上一段区间说代表的树的直径合并时,直径有四种可能,分别枚举用树状数组维护结点到根的距离修改时,在dfs序上用树状数组修改查询距离(u,v)(u,v)(u,v)时,dis(u)+dis(v)−2∗dis(LCA(u,v))dis(u)...原创 2019-10-03 08:03:23 · 250 阅读 · 0 评论