
dfs序
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
codeforces1467E. Distinctive Roots in a Tree
https://codeforces.com/contest/1467/problem/E这题反过来想以后就很简单了,当时正着想半天都想不出来怎么搞,但是我们反过来标记那些不合法点,只要被标记一次他就是不合法的,那么就很容易了不合法的时候分两种情况,如果当前点a[u],他的祖先节点中存在a[u],那么找到最近的那个vis[a[u]],那么vis[a[u]]向上,u向下,都是非法点,那么我们利用dfs序对树的这个值进行差分,就可以O(1)标记第二种情况就是如果它的祖先节点中不存在a[u],但是之前原创 2021-01-19 22:13:20 · 144 阅读 · 0 评论 -
A-Ancient Distance 2020牛客多校第4场
https://ac.nowcoder.com/acm/contest/5669/A这题主要是要想到K为定值时,如何找出最短距离于是我们可以二分最短距离x,然后再这棵树中,每次找到一个深度最深的点,然后从这个点向上走x到祖先anc,然后把anc标记为key点,并把anc所在的子树删除,重复这个过程直到把1拿掉,那么这就是最小的数量。删除子树,树上dfs序建线段树经典题,子树在dfs序上是连续的编号,于是删除就是区间覆盖想到这个最小的数量就很好求了我们直接枚举最短距离从1->mx,0的时原创 2020-07-21 02:47:39 · 342 阅读 · 0 评论 -
codeforces1363E Tree Shuffling
https://codeforces.com/problemset/problem/1363/E这题一看到子树,立刻想到dfs序,然后直接dfs序搞线段树打区间标记,bit维护区间剩余换0的个数和换1的个数,然后把点按ai排序搞就行了。因为一个cost更小的点,肯定是它能处理的尽量处理,然后如果当前这个枚举的点被某个ai更小点曾经处理过这个dfs序的区间了,说明那个ai更小的点是它的父节点,他就什么都不能干。这个点把他能处理的处理完之后,在dfn[id]的位置减去处理的个数,01都减,因为如果之后他的某原创 2020-06-01 01:50:51 · 259 阅读 · 0 评论 -
zoj4097边双联通分量缩点dfs序判断
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4097从4月份打浙大校赛到这两天对着代码肉眼查错很久还出各种数据调试才该出来,原来还是原来的dfs序判断有问题,当时考场上写的dfs序就是由问题的,还好今天改出来了,不然就要妥协写lca了,其实lca也挺好写的,但我一直坚信dfs序判断巨对所以想把这题调出来。。。...原创 2019-08-02 20:06:17 · 195 阅读 · 0 评论 -
SWERC2016 Performance Review
OI时期曾用过dfs序,结果今天没想起来。。。。考场上yy树状数组特殊用法奇特姿势,然而没卵用,只能dfs序转成区间。一场比赛A 2题,哇我好弱啊。。给你一棵树 每个结点有r,t值 现在求所有结点i的子树中的r值小于i点的r值的所有结点的t值之和。dfs序遍历,记录每个点访问进去时的dfn,和出来时候的dfn就知道他的子树的区间了。然后按照rank的从小到大进行添加,因为必须是严格小于时...原创 2017-10-07 20:55:13 · 380 阅读 · 0 评论