
ACM_树链剖分
文章平均质量分 87
逍遥丶綦
这个作者很懒,什么都没留下…
展开
-
树链剖分+线段树 poj2763 Housewife Wind
传送门:点击打开链接 题意:2种操作,一种路径上的值统一修改,一种是询问路径上数字连续区间个数。 思路:树链剖分+线段树合并。这道题目主要就是难在用树链剖分上套线段树合并后,因为整条链被分成了很多条短的,把这些短的也要按照顺序合并。 又因为其实是从左边和右边链的最底端向上执行的,所以应该把左右的分开,然后就是更接近根节点的点是区间的左区间,远离的点是右区间。 主要的问题就在于路径上的合并,原创 2015-12-03 14:36:03 · 836 阅读 · 0 评论 -
树链剖分+线段树 hdu3966 Aragorn's Story
传送门:点击打开链接 题意:路径更新,单点查询 思路:线段树+树链剖分,这里其实不需要懒惰标记也是可以做的 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define fuck(x) c原创 2015-12-02 23:55:16 · 899 阅读 · 0 评论 -
树链剖分+线段树 bzoj1036 树的统计Count
传送门:点击打开链接 题意:节点更新,路径求最大值以及求和。 思路:树链剖分,要注意单点更新和边更新的区别。然后就是在建线段树的时候,应该是用重新编号的新编号去建立的,刚开始一直没注意这个地方,然后调bug也调不出来,后来看了好久才看出来,以后还真要注意一下。 #include #define fuck(x) cout<<"["<<x<<"]" #define FIN freopen("in原创 2015-12-02 19:53:39 · 794 阅读 · 0 评论 -
树链剖分+线段树 spoj375 Query on a tree
传送门:点击打开链接 题意:边更新,路径查询边权最大值 思路:第一道树链剖分题,其实树链剖分就相当于把树的边给分类了一样,分成了重边和轻边。 然后,有一个性质,重链的条数和轻边的条数都不会超过log(n),所以总的复杂也只有log(n) 也就是说,本身要维护一个路径上的某个东西,如果直接用线段树做,并不是很好做, 树链剖分就相当于把重链和轻边分开求,因为重链在DFS序下编号是可以连在一起原创 2015-12-02 16:29:05 · 762 阅读 · 0 评论 -
树链剖分+线段树 poj3237 Tree
传送门:点击打开链接 题意:3种操作,1单点更新,2路径正负反转,3路径查询最大值 思路:线段树维护最大值和最小值和一个懒惰标记,然后在线段树的基础上用树链剖分维护 #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2015-12-02 23:57:47 · 805 阅读 · 0 评论