dfs序
Self-Discipline
在校大学生
展开
-
codeforces 1044F DFS dfs序+线段树
题意:给一颗初始树,然后有q次操作,每次操作一对点,如果这对点有边,就删除边(保证不删除初始的树边),否则,就加一条边,接下来你可以从某个点dfs搜索,如果搜索出来的边和初始树的边一样,那这个点就是好的点,求每次操作后有多少个好的点。 思路:首先对初始的树走一遍dfs序,l[u]表示u这个节点的dfs序号,r[u]表示以u为根的子树的序号最大的那个点序号,接下来看图分析。 假设加入x ...原创 2019-06-01 00:54:31 · 296 阅读 · 0 评论 -
HDU - 6394 Tree(树分块+倍增+dfs序)
题意:给出一棵树,然后每个节点有一个权值,代表这个点可以往上面跳多远,问最少需要多少次可以跳出这颗树。 分析:树上弹飞绵羊,利用dfs序把树上节点变成连续区间序列,先dfs一次得到dfs序,然后按dfs序分块。倍增计算从某点跳x到哪个点,用cn保存它跳出这一块需要的次数,ne保存跳出这块会去的点。然后块内就暴力修改了。复杂度n*sqrt(n)。 参考:https://www.cnblogs.c...原创 2019-07-20 00:57:24 · 151 阅读 · 0 评论