随笔分类 -  树上差分

摘要:暴力树剖做法显然,即使做到两个log也不那么优美。 考虑避免树剖做到一个log。那么容易想到树上差分,也即要对每个点统计所有经过他的路径产生的总贡献(显然就是所有这些路径端点所构成的斯坦纳树大小),并支持在一个log内插入删除合并。 考虑怎么求树上一些点所构成的斯坦纳树大小。由虚树的构造过程容易联想 阅读全文
posted @ 2019-05-02 19:32 Gloid 阅读(198) 评论(0) 推荐(0) 编辑
摘要:建出AC自动机及其fail树,每次给新加入的串在AC自动机上经过的点染色,问题即转化为子树颜色数。显然可以用dfs序转成序列问题树状数组套权值线段树解决,显然过不掉。事实上直接树上差分,按dfs序排序后lca处-1,树状数组维护子树和即可。 又一次写了cmp后没放进sort,心态爆炸。 阅读全文
posted @ 2019-01-02 19:50 Gloid 阅读(198) 评论(0) 推荐(0) 编辑
摘要:对每个权值分别考虑。则只有单点加路径求和的操作。树上差分转化为求到根的路径和,子树加即可。再差分后bit即可。注意树上差分中根的父亲是0,已经忘了是第几次因为这个挂了。 阅读全文
posted @ 2018-12-02 21:52 Gloid 阅读(186) 评论(0) 推荐(0) 编辑
摘要:考虑没有深度限制怎么做。显然的做法是直接转成dfs序上主席树,但如果拓展到二维变成矩形数颜色数肯定没法做到一个log。 另一种做法是利用树上差分。对于同种颜色的点,在每个点处+1,dfs序相邻点的lca处-1,那么查询子树颜色数就只需要查询子树和了。 然后加上深度限制。考虑将点一层层加进去,利用se 阅读全文
posted @ 2018-11-15 19:54 Gloid 阅读(222) 评论(0) 推荐(0) 编辑
摘要:即删除一条边使图中不存在奇环。如果本身就是个二分图当然任意一条边都可以,先check一下。否则肯定要删除在所有奇环的交上的边。 考虑怎么找这些边。跑一遍dfs造出dfs树,找出返祖边构成的奇环。可以通过树上差分标记奇环上的边。 但是这显然只包含了一部分奇环。注意到如果某条在奇环上的边同时也在一个偶环 阅读全文
posted @ 2018-10-29 20:34 Gloid 阅读(257) 评论(0) 推荐(0) 编辑
摘要:上一题的强制在线版。对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或。这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0。每次对询问看有没有子集异或值为0即可,可以简单地用线性基搞定。 阅读全文
posted @ 2018-07-28 16:32 Gloid 阅读(313) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示