传送门 这是一道好题啊……没有换根的话就是树剖板子题,但是加上换根怎么办? 每次暴力重构dfs序?那不T死你……(突然想到自己动态点分治每次重新跑一遍点分治的sd思路) 那么我们肯定是老套路,寻找修改根结点之后的不变量。我们先以最开始给定的根,来确定dfs序和其他一切一切的树剖基本工作。 把路径全部 ...
分类:
其他好文 时间:
2018-10-08 22:16:17
阅读次数:
184
P3379 【模板】最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接 ...
分类:
其他好文 时间:
2018-10-04 23:01:03
阅读次数:
179
题意:给你一棵树,然后有三种操作 I L R K: 把L与R的路径上的所有点权值加上K D L R K:把L与R的路径上的所有点权值减去K Q X:查询节点编号为X的权值 思路:树链剖分裸题(我还没有怎么学懂,但基本已经没有什么太大的问题,主要的问题就在于点或者边对于数据结构的映射关系是,主要没有单 ...
分类:
其他好文 时间:
2018-10-04 10:11:56
阅读次数:
154
题目简述: 给定一棵树,n个节点,每个节点表示一个石子堆。有m个操作,操作分两种,第一种修改节点中石子数量,第二种查询两个节点路径上的所有石子堆玩nim游戏,是否必胜。 数据范围:n,m<=500000,石子堆数量<=int_max 分析: 首先需要知道,nim游戏的必胜局面是石子堆的异或和不为0。 ...
分类:
其他好文 时间:
2018-10-02 20:28:34
阅读次数:
143
把一条路径拆成到根的四个链(两端点、lca和fa[lca]),然后给dfs序中链的端点做单点修改、区间查询它的子树和再加上它原来的权值就可以了 ...
分类:
其他好文 时间:
2018-10-01 20:38:31
阅读次数:
149
Description Solution 由于题目要求,将a[i]->b[i](边权为i)后所得的图应该是由森林和环套树组合而成。 假如是树形结构,所有的t[i]就直接在线段树t[i]点的dfs序(即in[t[i]],out[t[i]]区间)处记录t[i]点的深度。 这样,针对所有的f[i],在线段 ...
分类:
其他好文 时间:
2018-09-27 22:15:35
阅读次数:
204
这道题考的是DFS+序列化二叉树 我们将每一个节点的左子节点的值和右结点的值都存储下来,组成一个字符串,作为索引,将对应节点保存到map里。 如果一样的字符串已经出现过一次了,我们就把他的root保存在要返回的list中: ...
分类:
其他好文 时间:
2018-09-25 20:37:24
阅读次数:
130
题目大意:给你一棵树,支持一下三种操作 1.获取某节点到根节点的路径上所有节点的权值和 2.更换某棵子树的父亲 3.某子树内所有节点的权值都增加一个值w 当时想到了splay维护dfs序,查完题解发现思路是对的,然后我就写了足足6个小时才A st[x]代表入栈时间,ed[x]代表出栈时间 对于第一个 ...
分类:
其他好文 时间:
2018-09-25 01:27:22
阅读次数:
155
题意: 给一棵树,每次询问删掉两条边,问剩下的三棵树的最大直径 点10W,询问10W,询问相互独立 Solution: 考虑线段树/倍增维护数的直径 考虑dfs序的一个区间 [l, r] 是联通的 而我们知道了有 l <= k < r, 且知道 [l, k] 和 [k + 1, r] 两个区间的直径 ...
分类:
其他好文 时间:
2018-09-19 16:21:16
阅读次数:
354
https://www.lydsy.com/JudgeOnline/problem.php?id=5355 想在b站搜query on a tree系列不小心看到了这题 扑鼻而来的浓浓的OI风格的题面,6个操作,放在ACM界读完题就可以喷了(误 看到前三个操作...kdtree板子题,一维dfs序, ...
分类:
其他好文 时间:
2018-09-15 11:00:38
阅读次数:
155