摘要: //树链剖分,线段树维护 #include #include #define maxn 300500 #define INF 0x3f3f3f3f using namespace std; int n,m; int head[maxn],cnt; int dep[maxn],son[maxn],siz[maxn],fa[maxn]; int top[maxn],seg[maxn],rnk[... 阅读全文
posted @ 2019-05-08 00:29 Black_Gzombie 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 树链剖分求LCA,首先需要处理以下几个数组: 树链剖分需要两次dfs,第一次求出father、son、size和dep数组,第二次求出top数组。然后再求lca即可。 附上代码: 代码注释版(用于理解): 阅读全文
posted @ 2019-05-08 00:28 Black_Gzombie 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 我们熟知的斐波那契数列递推公式是: \(f(n)=f(n-1)+f(n-2)\) 假设我们需要求斐波那契数列的第n项,当n非常大(如n=1e9)的时候,递推肯定超时。我们不妨设: \(\binom{f_{n}}{f_{n-1}}=\begin{pmatrix}a & b\\ c & d\end{pm 阅读全文
posted @ 2019-05-08 00:12 Black_Gzombie 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 树状数组是用来维护序列前缀和的数据结构。它的修改与求和都是O(logn)的,效率非常高。 我们设序列为A,则树状数组c中,c[i]记录序列A的区间[ i-lowbit(i)+1 , i ]中所有数的和。 (树状数组是个好东西ovo) 树状数组在进行区间操作时,要从上到下访问,进行单点操作时,要从下到 阅读全文
posted @ 2019-05-08 00:05 Black_Gzombie 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 单点修改与查询 区间修改与查询 注意要使用标记下传来实现。 阅读全文
posted @ 2019-05-08 00:02 Black_Gzombie 阅读(1385) 评论(0) 推荐(0) 编辑