摘要: 树链剖分 树链剖分就是将一棵点权树以先遍历重儿子的方式,得到一个dfs序,再对这个dfs序进行操作,与一般的dfs序不同,重链在该dfs序是一个连续不断的区间,该dfs序支持链修改,链查询,子树查询,子树修改,求lca等。在一棵有根树上,我们称一个节点u 的子节点v 为节点u 的重儿子当且仅当v 是 阅读全文
posted @ 2018-02-08 08:17 empty_road 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 树状数组总结 首先我们来说一下这个算法的正确性,从一维开始吧,我们假设有两个点,i,i1,i一直加上lowbit(i),而i1一直减去lowbit(i1),这是两个严格单调的序列,如果这两个序列有交点,则有且只有一个交点k,则从i~i1这一段的和可以用c[k]来记录(且只有一个c[k]满足)。 二维 阅读全文
posted @ 2018-02-05 21:27 empty_road 阅读(126) 评论(0) 推荐(0) 编辑
摘要: # include # include # define N 100010 int a [N] ; int vmax [N > 1 ; build ( o * 2, lf, mid ) ; build ( o * 2 + 1, mid + 1, rg ) ; vmax [o] = std :: max ( vmax [o * 2], vmax [o * 2 + 1] ) ;... 阅读全文
posted @ 2018-02-05 11:31 empty_road 阅读(84) 评论(0) 推荐(0) 编辑