一些OI中NOIp范围内的数学知识(中间差分序列、插值部分有点掉线啊...)
一、数论相关
gcd的一些性质
- gcd(xa−1,xb−1)=xgcd(a,b)−1
- gcd(fiba,fibb)=fibgcd(a,b)
事实上第二个性质只要形如fi=afi−1+bfi−2(a,b互质)这样的递推式就成立
欧拉定理
若gcd(a,p)=1则有aφ(p)≡1(mod p)
拓展(一般情况):
at≡amin(t,t mod φ(p)+φ(p))(mod p)同余方程
形如:x≡ai(mod pi)
中国剩余定理:
若pi两两互质,存在通解x:
PPiTix=i∏pi=piP=Pi−1 mod pi≡i∑aiTiPi(mod P)
- 拓展形式(合并线性同余方程):xxx≡a1(mod p1)≡a2(mod p2)=a1+k1p1=a2+k2p2令t=gcd(p1,p2),则:a1+k1tp1tk1tp1k1x=a2+k2tp2t≡ta2−a1(mod tp2)≡ta2−a1×(tp1)−1(mod tp2)≡a1+p1(ta2−a1×(tp1)−1 mod tp2)(mod tp1p2)
二、积性函数
基础知识
令n=p1e1p2e2...pkek
ϵ(n)=[n=1]
1(n)=1
Id(n)=n
μ(n)=[max(e1,e2,⋯,ek)≤1](−1)k
φ(n)=n∏i=1k(1−pi1)
d(n)=∑d∣n1 约数个数
σ(n)=∑d∣nd 约数和
λ(n)=(−1)k 刘维尔函数(μ是一种特殊的刘维尔函数) 可做容斥
Dirichlet卷积
(f∗g)(n)=∑d∣nf(d)g(dn)
μ∗1=ϵ
Id=φ∗1⇒φ=Id∗μ
d=1∗1⇒1=μ∗d
σ=Id∗1⇒Id=μ∗σ⇒σ=φ∗d
这三个右边的式子可以通过左边的式子两边同时卷上μ得到(ϵ卷任何函数等于其本身)
d(ij)=∑x∣i∑y∣j[gcd(x,y)=1]
σ(ij)=∑x∣i∑y∣j[gcd(x,y)=1]xiy
满足交换律, 结合律, 两个积性函数的卷积也是积性的
三、组合数学
Lucas定理
(mn)=(⌊pm⌋⌊pn⌋)×(m mod pn mod p) (mod p) ∣ p is prime基本组合恒等式
i=0∑n(in)=2ni=0∑n(xi)=(x+1n+1)i=0∑n(ik+i)=(nk+n+1)i=0∑m(im)(m−in−m)=(mn)四、Stirling数
第一类Stirling数
- 定义: [nm] 表示将n 个物品分为 m 个无序非空环的方案数.
- 递推式:
[nm]=[n−1m−1]+(n−1)[n−1m]
- 生成函数:xn=i=0∑n[ni]xixn=i=0∑n(−1)n−i[ni]xi
第二类Stirling数
定义: {nm} 表示将 n个物品分成 m 个无序非空集合的方案数.
递推式:
{nm}={n−1m−1}+m{n−1m}
生成函数:
xn=i=0∑n{ni}xim!{nm}=i=0∑m(−1)m−i(im)in
五、差分序列
定义 Δkf(n) 为 f(n) 的 k 阶差分序列, 并且:
Δkf(n)={f(n),Δk−1f(n+1)−Δk−1f(n),k=0otherwise容易发现差分序列的具有线性性, 特别地, 多项式:
f(x)={0,0,0,⋯,1}∣x∈[0,n]它的差分序列长这样:
{{{{{{0,0,0,0,⋅⋅⋅,1}0,0,0,⋅⋅⋅,1}0,0,⋅⋅⋅,1}0,⋅⋅⋅,1}⋅⋅⋅}1}其第一列是 {0,0,0,⋯,1} , 事实上这个多项式就是
n!1i=0∏n−1(x−i)=(nx).
六、插值
已知一个 n 次多项式的 n+1 个点值, 求这个多项式的系数表示.
牛顿差值
求出多项式的 n 阶差分序列第一列 {ci}, 可以将多项式表示成:
f(x)=i=0∑nci(ix)拉格朗日插值
考虑构造一个经过所有给定点的多项式:
gi(x)=j=0,j≠i∏nxi−xjx−xjf(x)=i=0∑nyigi(x)七、自然数幂和
求:fk(n)=∑i=0nik
Solution
直接用第二类斯特林数展开:
fk(n)=i=0∑nj=0∑k{kj}ij=j=0∑k{kj}j!i=0∑n(ji)=j=0∑k{kj}j!(j+1n+1)这样的时间复杂度是O(k2)的,考虑继续优化
通过上一个方法我们知道 fk(n) 是一个关于 n 的 k+1 次多项式,
于是直接拉格朗日插值即可, 并且由于系数的特殊性质, 可以做到 O(k).
八、容斥与反演
Min-Max容斥
max(S)=T⊆S,T≠∅∑(−1)∣T∣−1min(T)
gcd-lcm容斥(Min-Max容斥的拓展)
lcm(S)=T⊆S,T≠∅∏gcd(T)(−1)∣T∣−1
二项式反演
f(n)⇔g(n)=i=0∑n(in)g(i)=i=0∑n(−1)n−i(in)f(i)
Stirling反演
f(n)⇔g(n)=i=0∑n{ni}g(i)=i=0∑n(−1)n−i[ni]f(i)九、题目选讲
「BZOJ4833」
Description
已知:
f(n)g(n)=⎩⎪⎨⎪⎧0,1,2f(n−1)+f(n−2),n=0n=1otherwise=lcm(f(1),f(2),⋯,f(n))求:
i=1∑ng(i)×in≤106
Solution
首先由前面提到关于gcd的结论,有 gcd(f(i),f(j))=f(gcd(i,j))
根据 Min-Max 容斥有:
g(n)=T⊆S,T≠∅∏gcd(T)(−1)∣T∣+1=T⊆S,T≠∅∏f(gcd(T))(−1)∣T∣+1构造h满足f(n)=∏d∣nh(d),代入得到
g(n)=d=1∏nh(d)∑T⊆S,T≠∅[d∣gcd(T)](−1)∣T∣+1=d=1∏nh(d)(最后这一步还是有点没想清楚,想通了再来填这个坑吧)
10.8 Update:
这个地方其实是因为所有含d这个因子的数所构成的所有集合的gcd显然都是能被d整除的,那么这些数构成的集合中,每个数都有选或不选两种方案,一种贡献是1,一种贡献是-1,但是因为T不能为空集,因此要减去空集的贡献−1,因此那个上面指数部分就是1
通过广义莫比乌斯反演可以得到:
h(n)=d∣n∏f(d)μ(dn)总时间复杂度O(nlogn)
剩下两道题还没看,坑待填