摘要:
边分治 「BZOJ 2870」最长道路tree 点击查看代码 #include<bits/stdc++.h> using namespace std; int n,m; int v[400005]; int ver[400005],ne[400005],head[400005],cnt=1,val[ 阅读全文
摘要:
杜教筛 \(𝐹\) 是 \(𝑓\) 的前缀和,\(𝐺\), \(𝐻\) 同理。 假设 \(𝑓 × 𝑔 = ℎ\) ,并且 \(𝐹, 𝐻\) 易求出,\(𝐺\) 难求出。 那么 $$H (𝑛) = \sum_{𝑖 \cdot 𝑗≤𝑛} 𝑓(𝑖) 𝑔(𝑗) = \sum 阅读全文
摘要:
四边形不等式与决策单调性 有如下的定理: 如果对于 \(a<b\),有 \(w(a,b+1)+w(a+1,b)>=w(a+1,b+1)+w(a,b)\) 成立,则此函数满足四边形不等式。 对于方程: \(dp[𝑖][𝑗]=min(dp[𝑖][𝑘]+dp[𝑘+1][𝑗])\) 定义使 \ 阅读全文
摘要:
Credit: Entropy Increaser. 接下来我们介绍一种由 Entropy Increaser (Baitian Li) 等人发明的一种针对多项式和形式幂级数的线性求和算法。这个算法推导简单,并且它统一了很多关于多项式的求和的问题中 ad hoc 的推导,是一个值得一学的新技术。 算 阅读全文
摘要:
问题引入. 给定 \(n\), \(k\),我们想计算 \[ S(n,k)= \sum_{i=0}^{n-1} i^k. \] 进一步地,我们已经知道 \(S(n,k)\) 是一个关于 \(n\) 的 \(k+1\) 次多项式,现在我们想求出它的系数。 推导. 对 \(i^k\) 的求和比较困难,但 阅读全文
摘要:
我们熟知一个度数为 \(D\) 的多项式有三种经典表示: 系数表示,也就是 \(P(x) = \sum_{i=0}^D\limits c_i x^i\)。 点值表示,也即给出 \(P\) 在 \(D+1\) 个不同的位置的取值 \((x_0, P(x_0)), \dots, (x_D, P(x_D) 阅读全文
摘要:
生成函数简介 一般生成函数 对于一个数列 \((f_i)_{i\ge 0}\) 其中 \(f_i\) 表示规模为 \(i\) 的特定组合对象的个数 定义 \((f_i)_i\) 的一般型生成函数为 \[ F(x) = \sum_{i=0}^{\infty} f_i x^i. \] 我们把所有满足 \ 阅读全文
摘要:
一般提到动态树,我们会不约而同的想到 LCT,这算是比较通用,实用,能力较为广泛的一种写法了。当然,掌握 LCT 就需要熟悉掌握 Splay 和各种操作和知识。ETT(中文常用称呼:欧拉游览树)是一种及其睿智且暴力,可以用暴力数据结构维护的一种除了能胜任普通动态树的 Link & Cut 操作还可以 阅读全文
摘要:
【模板】动态树(Link Cut Tree) Link-cut-tree是一种维护动态森林的数据结构,在需要动态加边/删边的时候就需要LCT来维护。 Link-cut-tree的核心是轻重链划分,每条重链用一颗splay来维护。 点击查看代码 #include<bits/stdc++.h> usin 阅读全文
摘要:
CF1089I Interval-Free Permutations 求长度为 \(n\) 的、且不包含一个连续子段的排列数量。 用析合树的思路,将问题转化为计算根的儿子不足 \(n\) 个的析合树数量。 设长度为 \(n\) 的、且不包含一个连续子段的排列数量是 \(A_n\) 先讨论根是合点的情 阅读全文