dfs序
文章平均质量分 53
_kikyou-
这个作者很懒,什么都没留下…
展开
-
欧拉序的几点性质
参考第一种欧拉序写法下:对于u,v两个点之间的简单路径。如果u,v存在祖先关系,那么u->v简单路径上的点就是在欧拉序的[in[x],in[y]]中恰好出现一次的点。(画图理解)如果不存在祖先关系,那么u->v简单路径上的点就是在欧拉序的[out[x],in[y]]中恰好出现一次的点,再加上他们的LCA。这样就把路径问题转化成了一个特殊的区间问题。应用(树上莫队)...原创 2021-10-27 15:55:30 · 371 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2)D. Hemose in ICPC ? (交互 二分+dfs序)
题目链接给定带边权的无根树,定义dis(u,v)等于u到v简单路径上所有边的GCD,每次可以询问一个点集,会返回点集中所有点对的dis最大值,最后输出这棵树中,使得dis(u,v)最大的u,v 。(2<=n<=1e3 ,最多询问12次)首先GCD具有只减不增的性质,最后答案就等价于输出边权最大的边的两个顶点。看到询问次数,12,点只有1000个,说明主体算法肯定是二分了。我们首先可以询问所有的点,返回的一定是最大边权W。我们想到,能不能把所有的边分成两部分,左边右边各询问一次,看看原创 2021-10-27 15:53:55 · 140 阅读 · 0 评论 -
E.Trees of Tranquillity(dfs序)
传送门题意:给定了两棵有根树,都是以1为根。标号为树1,树2 。我们现有n个独立的点,要进行连边操作,u,v可以连边当且仅当他们在树1中有祖孙关系,在树2中无祖孙关系 。连完边后,问得到的这个图的最大团的顶点数是多少。团(clique):任意两个顶点都有直接边的子图。分析:首先我们通过dfs序把祖孙关系转化一下:L[i]表示进入i的dfs序,R[i]表示从i子树出去时候的dfs序, 那么一个节点就对应了一个区间 [L[i],R[i]] , u v有祖孙关系就等价于区间有包含关系,无祖孙关系原创 2021-05-26 15:38:44 · 586 阅读 · 3 评论 -
Codeforces Round #225 (Div. 1) C. Propagating tree (线段树+dfs序)
传送门原创 2021-05-21 11:55:23 · 144 阅读 · 1 评论 -
Codeforces Round #305 (Div. 1)E. Mike and Friends(AC自动机+fail树dfs序+主席树)
传送门题意:给定n个字符串,q次询问,每次给出正整数L,R,X,要求输出第x个字符串在第l个字符串到第r个字符串的总匹配次数。(字符串长度之和不大于2e5)分析:首先我们考虑对于一个字符串集合,我们如何求出其中某个字符串在集合中的匹配次数?比如给定集合cacaa,baabaa,aa。求出aa在集合中的总匹配次数。(易知答案是4) 。 我们可以把所有的串插入AC自动机,再用aa去trie树上匹配,随后统计fail树上每个子树的点权和。 aa的尾节点的匹配次数就是答案了。 为什么呢?因为在fail树原创 2021-05-12 11:05:30 · 208 阅读 · 0 评论 -
Distinctive Roots in a Tree CodeForces - 1467E (组合优化+dfs序 +差分)
题目链接题意:给定一棵带点权无根树, 定义good root:good root到叶子节点任意一条路径上,都不包含相同元素。 问有多少个good root。分析:参考大佬解法我们先看相同的两个点×的两个点权值相同,只会影响以之为根的树 。我们需要把这两个树所有节点都打上标记 ,所以需要跑一个dfs序 ,然后树修改就变成区间修改了 ,可以用差分数组维护。(跑dfs序需要根,我们可以令1为根。)每对同权节点有两种情况:1、祖孙关系 2、非祖孙关系对于2:我们dfs完以u为根的树的时候,如原创 2021-03-27 15:06:58 · 162 阅读 · 0 评论