摘要:
树链剖分的本质是生成 dfs 序的启发式算法。 在对路径进行修改时,需要注意路径两个端点究竟哪个点往上跳,取决于重链头的深度,而不是端点的深度。感性理解的话可以把重链头的深度浅的那条链上更可能是路径的转折点,跳上去了就会导致死循环。 代码如下 cpp include using namespace 阅读全文
摘要:
题目大意:需要维护一个长度为 N 的数组,支持在历史版本上单点修改和单点查询。 题解:显然,如果直接暴力维护的话会 MLE。因此,采用线段树进行维护,使得空间复杂度由 $O(mn)$ 降至 $O(mlogn)$,不过相应的时间复杂度由 $O(1)$ 上升至 $O(logn)$。 代码如下 cpp i 阅读全文
摘要:
题目大意:给定一个长度为 N 的序列,支持两个操作:在序列末尾添加一个新的数字,查询序列区间 $[l,r]$ 内使得 $a_p\oplus a_{q+1}\oplus ... a_N\oplus x$ 值最大。 题解:由于是查询区间的最大异或值,可知应该使用可持久化数据结构,再由于是最大异或和,可知 阅读全文