DFS序列
aozil_yang
这个作者很懒,什么都没留下…
展开
-
ICPCCamp2017 Day 5 E HDRF(DFS序列 + 线段树 + 离散化)
大体题意: 给你一颗树,ri 为以当前结点为根的最小子树上的权值(单点),每个点有固定的权值vi,每个点的权值都不一样,每次你必须优先访问ri最小的,然后删掉,然后重新计算ri,求这个删除点的路径? 思路: 比赛中只想到了用dp 记录某个点的最小权值,然后一直跳下去,然后在回来更新dp 这样肯定是超时的。因为回来更新太慢了。 其实没必要用dp记录最小权值。 直接给这棵树 进行dfs序列原创 2017-02-17 17:33:44 · 461 阅读 · 0 评论 -
HDU 3974 Assign the task(dfs序 + 线段树区间赋值,单点查询)
题意: 给一棵树, C x 操作 查询x 节点的权值, T X Y, 将X 这课子树上所有节点权值都赋值为Y。 思路: 因为是子树所有节点。 直接dfs序跑一遍, 将所有节点变成连续的, 然后就可以用线段树了。 剩下的就是 线段树区间赋值,单点查询问题了。 #include #include #include #include using namespace std; co原创 2017-06-07 21:31:48 · 436 阅读 · 0 评论 -
CodeForces - 384E Propagating tree(DFS序 + 二分 + 线段树)
题意: 给你一棵树, 两种操作: 1. 将结点x 所有后代进行加和val, x 结点加 val ,x 孩子 加(-val) x 孩子的孩子加 -(-val), 以此类推。 2. 求结点x 的权值。 思路: 比赛时没啥好思路,就做别的题去了, 但总感觉这就是线段树。 果真没错。 其实挺水的= = 整体思路: 先将树dfs序跑一遍, 使得每个点变成连续的。 将树分成两原创 2017-07-09 22:08:31 · 510 阅读 · 0 评论