摘要: 这题和这个是一样的,唯一的不同是内存限制变小了今天学到了一种函数式线段树成段更新时节约内存的办法 。。。先考虑朴素的仅支持成段加减的线段树,我们可以用方式解决:1.正常的懒惰标记,当访问到带有懒惰标记节点的子区间时将标记下传;2.不用下传的懒惰标记,我们用一个标记来记录当前节点的整段区间被累加了多少,当询问的时候我们在从根节点走到目标结点的过程中不断累加所经过节点上的标记值。。。基于这两种思想,就有了函数式线段树的两种实现方式,第一种在pushdown的过程中会产生大量的结点,而第二种没有pushdown的过程,不会新建过多的节点 1 #include<cstdio> 2 #inc 阅读全文
posted @ 2013-06-05 21:38 silver__bullet 阅读(980) 评论(0) 推荐(0) 编辑
摘要: 题意: 带询问历史版本的线段树>_<解法: 主席树的成段更新,除了线段树成段更新的懒惰标记之外还要用一个懒惰标记来记录当前节点和其子节点是否是同一个版本的,如果不是的话,在pushdown的过程中要新建两个新节点,别的没什么了>_< p.s.主席树的内存消耗真是叹为观止。。。hdu4348徘徊在MLE和RE之间。。。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 阅读全文
posted @ 2013-06-05 07:31 silver__bullet 阅读(495) 评论(0) 推荐(1) 编辑