oi-math 重修 (upd:求导中的四则运算与复合函数求导)

 


OI 数学重修

注: 很多东西没来得及写例题和代码,以后遇到会补上

想了一下虽然还有很多没写完,但是这两天要开数学了,决定后面的分成一个一个博客写然后在这挂链接,所以发出来了。

主题是看着 oi-wiki 写的,但细节上尤其是证明部分不太一样,毕竟也不是什么教学性质的,权当一个学习笔记罢了,所以可能不适合给别人学,不过可以看看里面的证明。

有错误请及时联系我。

一、 数论 :

1、欧拉函数:

定义:

φ(n)= 小于 n 的正整数中与 n 互质的数的个数。

性质:

1、 欧拉函数是积性函数

gcd(a,b)=1 时, φ(ab)=φ(a)φ(b)

2、 n=d|nφ(d) (欧拉反演)

给个证明:

首先设 fx 表示 gcd(k,n)=x,k<xk 的个数,所以 n=i=1nfi 。然后有这么一个事: gcd(x,y)=kgcd(xk,yk)=1 ,所以 fx=[gcd(kx,nx)=1]=φ(nx) ,所以 n=i|nφ(i)

3、 n=pkp 是质数,那么 φ(n)=pkpk1

其实就是所有的数 n 减去能被 p 整除的数的个数 np=pk1

4、 n=i=1mpikipiφ(n)=ni=1mpi1pi

证明:

因为 φ 是积性函数,所以 φ(n)=i=1mφ(piki) ,然后我们又知道 φ(piki)=pikipiki1=piki(11p) ,所以 n=i=1mpiki(11p)=ni=1m(11p)

5、对于不为 0 的整数 n,mφ(nm)φ(gcd(n,m))=φ(n)φ(m)gcd(n,m)

证明:

g=gcd(n,m) ,因为积性函数,所以 φ(n,m)=φ(ng)φ(mg)φ(g2) ,然后 φ(g2)=gφ(g) ,所以

φ(nm)φ(gcd(n,m))=φ(ng)φ(mg)φ2(g)g=φ(n)φ(m)g

2、筛法:

这就不再说了,学好线性筛筛积性函数就行。

什么神秘筛法以后再来补充吧。

3、数论分块:

有一些式子里面有的值只和 nx 有关,比如 : i=1nnx

贴张图:

image

n=11 ,但是 nx (图中的绿点) 只有 4 个取值,由此我们可以知道 nx 的取值很少,实际上只有 n 级别个。

证明: 当 xn 时, nx 最多只有 n 个, 当 x>n 时, nx<n ,所以 nx 也只有 n 个。

因此我们可以不用直接枚举 x ,而是枚举 nx ,对 nx 相同值的 x 打包处理。

总之看了代码就会了:

int n=read();
for(int l=1,r;l<=n;l=r+1){
r=n/(n/l);// 当前的取值为 n/l ,取到这个值的右边界是 r
ans+=(r-l+1)*(n/l);
}

然后更进阶的就有高维数论分块,那么为了每次移动不会跳过任意一维,每次我们取各个维的下一个分界线的最小值。

4、裴蜀定理:

其主要内容有两条:

a,b 是不全为 0 的整数 。

1、 对于任意整数 x,y ,满足 gcd(a,b) | ax+by

证明:

gcd(a,b)|a,gcd(a,b)|b

gcd(a,b)|ax,gcd(a,b)|by

gcd(a,b)|ax+by

2、 存在整数 x,y 使得 ax+by=gcd(a,b)

如果 x,y 中有一个为 0 ,那么该式成立,接下来只考虑两者都是 正整数 ,且 ab 的情况。

首先 令 gcd(a,b)=d , 并将等式两边同时除去 d ,得到 a1x+b1y=1 , 且 gcd(a1,b1)=1

然后我们模拟 辗转相除法 的过程:

第一步 : ab1,ba1kb1

第二步 : ab,bakb

n 步: a1,b0

最后一步,我们注意到 a=1 ,且 a 一定可以被表示为 k1x+k2y 的形式,所以我们自然证明了上面的式子。

上述证明也给出了我们如何求解 ax+by=gcd(a,b) 的一组解:

我们在 求解 gcd 递归过程中额外记两个变量 k1,k2 ,那么函数 gcd(int a,int b,int k1,int k2) 表示 k1a+k2b=0 ,那么我们知道 递归的下一步会 ab,baabb ,那么他会递归求解出 k1,k2 , 所以 bk1+ak2abbk2=1 ,因此我们可以知道本层的 k1=k2,k2=k1abk2 ,用时注意边界 a=1,b=0 时直接令 k1=1,k2=0 ,最终我们可以知道方程的一组解为 k1,k2

上述方法可以求得方程的一组特解,该怎么求其他的解呢?

考虑我们知道那组特解 ax+by=1 , 我们尝试调整 x 的值,即给 x 加上一个尽量小的数,并给 y 减去一个数使得获得一组新解 x1,y1 ,那么我们假设 x1x+k,y1yabk ,可以知道只要满足 y1 是 整数 就是一组合法解,那么也就是满足 abk=adbdk 是整数,其中 d=gcd(a,b) ,所以只要满足 bd|k 即可。最终我们知道 x1x+tbd,y1tad 就是通解。

5、 费马小定理与欧拉定理

费马小定理:

p 是素数,则 ap11(modp)

欧拉定理:

gcd(a,m)=1 ,则 aϕ(m)1(modm)

ex欧拉定理

ab{abmodϕ(m)gcd(a,m)=1ab,gcd(a,m)1,b<ϕ(m)a(bmodϕ(m))+ϕ(m),gcd(a,m)1,bϕ(m).

证明咕咕咕。

6、 求乘法逆元:

(1)如果模数 p 是素数,那么根据费马小定理 ap2a1(modp) ,我们可以使用快速幂求解。

(2)当模数 pa 互质时,可以用 exgcd 求解逆元 ,设逆元为 x ,那么可知 ax1(modp)ax+kp=1 ,用 exgcd 求解 x 即可。

7、 CRT(中国剩余定理)

CRT 是用来求解一组形式如下的一元线性方程组 ( n1,n2......nk 两两互质 ) 的:

image

先给出计算过程:

(1): 计算 n=ni

(2): 对于第 i 个方程:

计算 mi=nni , mi1(modni),ci=mimi1 不取模。

(3): 然后该方程组在模 n 意义下的唯一解为 x=i=1kaici(modn)

证明:

首先证明解的正确性:

对于 imi=jinj ,所以 mi0(modnj,ji) ,所以

xj=1kajcj(modni)aici(modni)aimi(mi1modni)(modni)

mimi11(modni)

xai(modni)

然后来证明唯一对应性:

考虑方程组在模 ni 意义下的值域为 [0,n) ,而所有方程组的个数为 ini=n ,所以方程与答案唯一对应。

应用:

除了求解上述形式的线性方程组之外,还可以使用 CRT 表示一个大数,比如题目要求我们对一个 非质数 取模,这其中需要使用逆元,那我们就可以把这个模数拆开成为几个不互质的模数分别对他们算出答案,然后用 CRT 组合回去。又或者一个 DP 是 O() 的,模数很大,无法直接DP, 那么我们可以把模数拆成小模数然后直接 DP ,最后组合回去。

例题: 洛谷 P2480 [SDOI2010] 古代猪文

8、 威尔逊定理:

对于素数 p(p1)!1(modp)

证明:

p=2 时,一定成立。

p3 时:

考虑逆元,对于一个数 1i<p ,他的逆元 1i1<p,那么分两种情况:

(1): ii1 ,也就是说 i 和他的逆元不同,所以他们相乘 = 1 。

(2): i=i1 ,则 i21(modp)i210(i+1)(i1)0i=±1 ,因为 p3 ,所以 1p1 ,再算上他俩的乘积 1 可得 (p1)!1(modp)

9、 卢卡斯定理:

卢卡斯定理用于求解大组合数取模的问题,说白了就是你要求一个 n,m 很大 , 但是 p 不是很大可以 O(n) 预处理的质数时,就可以用卢卡斯定理来算 (nm)

内容:

对于质数 p ,有:

(nm)modp=(npmp)(nmodpmmodp)modp

证明:

首先考虑 (pn)modp 的取值, (pn)=p!n!(pn)! ,注意到如果 n0 and np 时 , 分子中的 p 不会被消去,所以 (pn)=0 ,否则, (pn)=1 ,总结可写成 : (pn)modp=[n=0 or n=p] ,由此可得:

(a+b)p=i=0p(pi)aibpi=i=0p[i=0 or i=p]aibpi=ap+bp(modp)

上述结论可以应用到多项式中:

考虑一个二项式

fp(x)=(axn+bxm)pmodpapxpn+bpxpmaxpn+bxpmf(xp)

所以对于二项式 (1+x)nmodp ,有:

(1+x)n(1+x)pn/p(1+x)nmodp(1+xp)n/p(1+x)nmodp

可以知道 (nm) 就是 (1+x)nmodpxm 次上的取值,然后我们可以注意到原式经过上述变化后分成了两部分,前者对 x 次数的贡献是 k1pk1n/p ,后者的贡献是 k2k2nmodp ,也就意味着 xm 是有 第一部分的 xk1p× 第二部分中 xk2 来的 ,所以可知 (nm)modp=(n/pm/p)(nmodpmmodp)modp 也就证明了卢卡斯定理。

exlucas

咕咕咕。

10、 原根:

决定以后再胡。

11、 莫比乌斯反演:

定义:

μ 为莫比乌斯函数,其定义是:

μ(n)={1n=10n(1)kkn

性质:

(1) μ 是积性函数。

(2)

d|nμ(d)={1n=10n1

证明:

首先 如果 n 含有 平方因子 ,那么 μ(n)=0 ,因此对于 n=pici,n=pi , 有 d|nμ(d)=d|nμ(d)

接下来我们只讨论 没有平方因子的情况 , d|nμ(d)=i=0k(ki)(1)i=(1+(1))k=0

于是我们证明了结论 [n=1]=d|nμ(d)

(3)

ϕ(n)=d|ndμ(nd)

不会证明,学了狄利克雷卷积再补。

线性筛求解:

因为 μ 是积性函数,所以我们可以用线性筛去筛:

inline void sol(){
mu[1]=1;
for(int i=2;i<=n;++i){
if(!no[i])p[++cnt]=i,mu[i]=-1;// 质数只有一个素因子,所以 mu[i]=(-1)^1
for(int j=1;j<=cnt&&p[j]*i<=n;++j){
no[p[j]*i]=1;
if(i%p[j]==0){mu[p[j]*i]=0;break;}// 有平方因子,所以 mu[i]=0
mu[p[j]*i]=-mu[i];//相比于 i , p[j]*i 多了一个 p[j] ,所以 mu[p[j]*i]=-mu[i]
}
}
}

莫比乌斯变换:

这个直接看题吧,主要记住 [n=1]=d|nμ(d)


经典题: 「HAOI 2011」Problem b

首先拆分可以变换为求 i=1nj=1m[gcd(i,j)=k]

将其整体除以 k , 变成

i=1nkj=1mk[gcd(i,j)=1]

注意到有了我们想要的 n=1 的形式,所以直接变成了

i=1nkj=1mkd|gcd(i,j)μ(d)=i=1nkj=1mkd|i,d|jμ(d)

看起来好像更难求了,但是我们考虑枚举 d ,那么他可以对 d|i,d|ji,j 做贡献,而且 i,j 不相关,所以我们可以写成:

dμ(d)nkdmkd

然后数论分块可以做到 O(n)


下一个,感觉没用到莫反啊: 「SPOJ 5971」LCMSUM

i=1nlcm(i,n)

然后一看 T3×105 ,感觉很不可做,硬着头皮推式子:

首先尝试转化成 gcd 的形式

i=1nlcm(i,n)=i=1ni×ngcd(i,n)

然后运用人类智慧 ,注意到 gcd(i,n)=gcd(ni,n) ,于是我们把 i 从 0 开始,并将分母相同的项合并:

12i=0n(i+ni)ngcd(i,n)=12i=0nn2gcd(i,n)

然后还是很难处理 gcd ,因为枚举 i ,仍然是 O(n) 的,所以我们考虑能不能枚举 gcd(i,n) ,并尝试降低复杂度。枚举 gcd(i,n)=d ,考虑满足的 i 的个数, gcd(i,n)=d 等价于 gcd(id,nd)=1 ,所以满足 gcd(i,n)=di 的个数就等于 满足 gcd(id,nd)=1id 的个数 ,等于 ϕ(nd) ,然后你可能去写了发现错了,因为 ϕ(n) 的定义是 小于 n 且与 n 互质的 正整数 的个数,没算 0 ,所以我们得单算 0 的贡献 。

所以写成:

12d|nn2×ϕ(dn)d+12n

然后一个会经常用到的 trick 是,我们使用超人的注意力注意到 ϕ 里的 nd 和 外面的 n2d 只差一个 n ,于是 令 d=dn ,原式写成:

12nd|nd×ϕ(d)+12n

然后考虑线性筛去筛 f(n)=d|nd×ϕ(d)


下面这个题会涉及很多经典化简方法,P1829 [国家集训队] Crash的数字表格 / JZPTAB

i=1nj=1mlcm(i,j)

看起来好像是上个题的进阶版,能不能用同样的方法化简呢(反正我没化出来一个可求的样子)

起手把 lcm 改为 gcd :

i=1nj=1mijgcd(i,j)=i=1nj=1md|i,d|j[gcd(i,j)=d]ijd=d=1i=1ndj=1md[gcd(i,j)=1]idjdd=d=1di=1ndj=1md[gcd(i,j)=1]ij

经过上述化简我们竟然将 d 从分母上消去了,然后 对后面两个求和 设为函数 f(n,m) 直接莫反,成为:

d=1μ(d)d2i=1ndj=1mdij

其中一步和上面化简一样。

对于后面的形如 i=1nj=1mij=(1+n)n2(1+m)m2

然后对于

d=1μ(d)d2(1+nd)nd2(1+md)md2

我们可以数论分块 O(n) 求解

回到一开始的式子

d=1df(nd,md)

还是可以数论分块,于是 时间复杂度为 O(nn)


如果上面的你都会了,那么下面这道题除了一个结论,别的应该比较容易, P3327 [SDOI2015] 约数个数和

d(x) 表示 x 的约数个数,求:

i=1nj=1md(ij)

首先我们知道应该把 d(ij) 给转化成一个什么东西,以方便我们套莫反,然后就不会了(

然后又一个比较神秘的结论是:

d(nm)=i=1nj=1m[gcd(i,j)=1]

我们来证一下:

考虑把 n,m 写成分解形式 n=pici,m=pidinm=pici+di ,我们对每一个 pi 进行考虑 , 对于一个 pi 他的次数可以是 0......ci+di ,然后看上面那个式子,发现这个构造刚好满足 pi 会被算 ci+di+1 次 (在 n 上取 ci+1 次,在 m 上取 di+1 次,但要去掉两个都是 0 的时候重复的一次 ) ,那么对于每个 pi 上面的枚举都不重不漏,证毕。

会了结论之后就可以直接套莫反了:

以下用 f 代替 d 函数

i=1nj=1md(ij)=i=1nj=1mx|iy|j[gcd(x,y)=1]=i=1nj=1mx|iy|jd|x,d|yμ(d)=i=1nj=1md|i,d|jf(id)f(jd)μ(d)=d=1μ(d)i=1ndj=1mdf(i)f(j)=d=1μ(d)i=1ndf(i)j=1mdf(j)

发现后面两个求和可以直接预处理,用 pre(n) 表示 i=1nf(i) ,原始写成:

d=1μ(d)pre(nd)pre(md)

可以数论分块,至此我们可以 O(Tn) 解决本题。


再来一个: P3312 [SDOI2014] 数表

Q 次询问,每次询问给出 n,m,a ,求:

i=1nj=1mf(gcd(i,j))[f(gcd(i,j))a]

其中 fi 表示 i 的约数和。

考虑枚举 gcd :

i=1nj=1mf(gcd(i,j))[f(gcd(i,j))a]=k=1n[fka]fki=1nj=1m[gcd(i,j)=k]=k=1n[fka]fkd=1nkμ(d)nkdmkd

单词询问的复杂度为 O(n×n) 的,跑不过去,考虑枚举 kd=T 会不会有什么好方法:

k=1n[fka]fkd=1nkμ(d)nkdmkd=T=1nnTmTd|Tμ(d)fTd[fTda]

这个 fia 的限制很难用推式子去直接做了,那要不就上点暴力的数据结构?

考虑将询问按 a 离线下来进行扫描线,每次将新加入的合法的 fi 暴力插入数据结构里,我们枚举合法的 fi 是调和级数 O(nlogn) 的,每次树状数组或者线段树等只要能维护前缀和的东西是 O(logn) 的,所以这部分是 O(nlog2n) 的,然后每次询问用数论分块加树状数组是 O(Qnlogn) 的,所以总时间复杂度 O(nlog2n+Qnlogn) ,可以通过。

二、 组合数学:

1、 排列组合:

主要介绍二项式定理相关内容,简单的排列组合未进行讲解。

二项式定理:

二项式定理与组合数关系密切,他写作:

(a+b)n=i=0n(ni)aibni

考虑它的实际意义,每个 (a+b) 里面可以提供一个 a ,或者一个 b ,那么得出来的项 aibniai 是从 i(a+b) 里面得到的,所以有 (ni) 个,于是上式成立。

然后它还可以扩展到多项式上:

(i=1kai)n=i=1kni=n,ni0(nn1,n2,n3,......,nk)aini

其中 (nn1,n2,n3,......,nk) 是多项式系数,个人认为可以将它理解为 把 n 个东西分成 k 堆,第 i 堆的数量为 ni ,所以有式子:

(nn1,n2,n3,......,nk)=n!ini!

只需要把原式展开成为组合数,然后一消便可证明。

多重集的排列数 | 多重组合数

一个集合 S= { niai|1ik } ,表示有 k 种物品,每种物品 aini 个。那么 S 的全排为:

n!i=1kni!

多重集的组合数

一个可重集 S ,对于 rni,ik ,求从 S 中选出 r 个元素组成一个可重集的方案数。

这等价于 i=1kxi=r 的非负整数解的数目,直接插板:

(r+k1k1)


另一个问题:还是可重集 S ,从 S 中选出 r 各元素组成一个可重集的方案数。问题等价于求方程 i=1kxi=r,i[1,k],xini 的非负解的数目。 并不好做,我们考虑用全集减去非法方案数即为答案。

Si 表示对于 i 满足 xini 的集合, Si 表示对于 i 不符合的集合,那么有:

ans=|U||i=1kSi |

易知 |U|=(r+k1k1) ,对于后面的,我们考虑容斥:

|i=1kSi|=i|Si|i,j|SiSj|+i,j,k|SiSjSk|......+(1)k|p=1kSp|

考虑对于每一个怎么求和怎么求,这相当于求 不同下界整数和的数目 ,即方程 i=1kxi=r,i[1,k],xiqi 的非负整数解的数目。

我们考虑直接给每个 xi 人为加上 qi ,以保证他们不会低于下界,也就相当于求 i=1kxi=ri=1kqi 的非负整数解的方案数,然后就可以直接插板:

A|i=1SAi|=A(r+ki=1(nAi+1)1k1)

其中 A 为枚举的集合

那么最终答案为:

ans=(r+k1k1)i=0k(1)iA(r+k1j=1i(nAj+1)k1)

组合数性质:

1、

(nm)=(nnm)

由组合意义可知

2、

(nm)=nm(n1k1)

将计算式展开即可得

3、

(nm)=(n1m)+(n1m1)

递推式,也是杨辉三角的公式

4、

i=0n(ni)=2i

二项式定理的特殊情况,即 a=b=1 时,用来快速求和

5、

i=0n(1)i(ni)=[n=0]

二项式定理 a=1,b=1 时,但 n=0 时比较特殊。

6、

i=0m(ni)(mki)=(n+mk)

可以将一个组合数拆开,也成为 范德蒙恒等式

证明:

n+m 个物品,要从中选择 k 个物品,我们直接将物品分成两堆 n,m 的,然后枚举 k 个物品在两堆分别选了多少,这些情况和就是所有情况。

7、

i=0n(ni)2=(2nn)

6的特殊形式。

8、

i=0ni(ni)=n2n1

考虑转化一个实际意义: 选了 i 个就有 i 的贡献,那么选了一个就有 1 的贡献,那么我们考虑贡献的期望为 n2 ,一共有 2n 种方案数,所以总方案数为 n2×2n=n2n1

9、

i=0ni2(ni)=n(n+1)2n2

同上,也可以用期望来证明,只需考虑期望的线性性。

10、

i=0n(ik)=(n+1k+1)

n+1 个物品中选出 k+1 个物品,我们考虑枚举最后一个物品在哪,然后从他前面的物品里选出 k 个来,得证。

还有一种证明的方法,具体来说因为 (nm)=(n1m)+(n1m1) ,所以 (nm)=(n+1m+1)(nm+1) ,然后把式子展开即可消去后面的部分。

用杨辉三角证明和上面的方法基本一样。

11、

(ni)(ik)=(nk)(nkik)

证明通过暴力拆式子或者考虑组合意义都可得出。

12、

i=0n(nii)=Fn+1

其中 Fi 是 斐波那契数列 的第 i 项。

但我不会证,run了。

二项式反演

fi 表示 恰好选了 i 个物品组成特定结构的方案数 , gi 表示 在 i 个物品中至少选了 j0 个物品构成特定结构的方案数。

如果已知 f 显然有

gn=i=0n(ni)fi

如果已知 g 则有

fn=i=0n(1)ni(ni)gi

上面已知 gf 的过程就是二项式反演。

证明:

首先将 g 展开,得:

fn=i=0n(1)ni(ni)j=0i(ij)fj=i=0nj=0i(1)ni(ni)(ij)fj

然后交换枚举顺序:

fn=j=0nfji=jn(1)ni(ni)(ij)=j=0nfji=jn(1)ni(nj)(njij)=j=0n(nj)fji=jn(1)ni(njij)

对于后面的求和式,设 k=ij ,有

k=0nj(1)k(njk)

由前面的第 5 个式子可以知道上式等价于 [nj=0][n=j] ,代入可得:

fn=j=0n(nj)fj[j=n]

不得不说非常巧妙。

2、 抽屉原理

这玩意没啥,(因为我不会用)。

3、 容斥原理

定义

对于全集 U 里面的元素有 n 种属性,称之为 Pi ,拥有 Pi 的元素的集合为 Si , 那么有

|i=1nSi|=k=1n(1)k1A|j=1kSAi|

证明

我们对每个元素进行考虑,对于元素 x ,假设他出现在了 S1,S2,S3,......,Sk 中,那么他被计算的次数就是

cnt=(k1)(k2)+(k3)......+(1)k(kk)=i=1k(1)i1(ki)=(k0)i=0k(1)i(ki)=(k0)[k=0]=1[k=0]

上述推到说明公式不重不漏的计算所有出现过的数 1 次,所以最后算出来是全集。

应用

容斥的公式比较简单,但应用较多。

不定方程非负整数解计数

在刚才说组合数的时候,我们已经用到了容斥来解决这个问题,即 多重集的组合数 的第二个问题,求方程 i=1nxi=m, i[1,m],xini ,的非负整数解数目。

上次我们的确用容斥解决了这个题,但一般使用容斥时都会有容斥模型,我们就这道题来说说容斥模型是什么。

容斥模型

1、 首先有全集 U 表示上述方程的非负整数解。

2、 这个问题关心的变量是 xi

3、 每个变量的属性,在这就是 xi 的限制条件 xini

那么我们要求的是 |i=1nSi| ,对于交集我们不好直接容斥,所以将它转化为 |i=1nSi|=|U||i=1nSi| ,然后我们就可以对着后面那个上容斥公式了。

然后就和之前说的一样。

P1450 [HAOI2008] 硬币购物

其实和上面那道题基本一样,采用同样的容斥模型,只不过这次算方案数需要用背包去做。


完全子图染色(容斥逆用)

A 和 B 喜欢对图(不一定连通)进行染色,而他们的规则是,相邻的结点必须染同一种颜色。今天 A 和 B 玩游戏,对于 n 阶 完全图 G=(V,E) 。他们定义一个估价函数 f(S) ,其中 S 是边集, SE . f(S) 的值是对图 G=(V,S)m 种颜色染色的总方案数。他们的另一个规则是,如果 |S| 是奇数,那么 A 的得分增加 f(S) ,否则 B 的得分增加 f(S) . 问 A 和 B 的得分差值。

这题这是一眼没思路,尝试写出计算式:

ans=S(1)|S|+1f(S)

rt,这个式子中 (1)i 的形式和标题可以提醒我们他和容斥有关,那么我们尝试写出容斥模型。

容斥模型

首先如果确定了 S 的话,每种染色方案合法当且仅当对于 (u,v)S,colu=colv ,那么他的容斥模型即:

1、 元素为每对边 (x,y)

2、 属性为边 (x,y) 满足 colx=coly .

我们称满足属性 (x,y) 的集合为 sx,y ,那么有

f(S)=|i,jsi,j|

给每条边编号,然后以 sidi,j 代替 si,j ,有

f(S)=|isi|

f(S) 代回原式

ans=S(1)|S|+1|i,siSsi|

然后逆向容斥可得

ans=|isi|

即将答案转化为了至少有一条边满足两点颜色相同的方案数,用全集减去相邻两点不同的方案数即可,所以有

ans=mnAmn

从刚看这道题无从入手,到后来由计算式中的 (1)k 猜想容斥,建立合适的容斥模型,感觉这就是这个容斥的思路吧。

4、 斐波那契数列

定义:

定义斐波那契数列 F 表示斐波那契数列,有:

Fx={0,x=01,x=1Fx1+Fx2,x>1

一些性质:

1、 Fn1Fn+1Fn2=(1)n

首先在 n 比较小的时候成立,然后我们尝试归纳,设 gn=Fn1Fn+1Fn2 ,我们把 gn 拆开:

gn=Fn1Fn+1Fn2=Fn12+Fn1FnFnFn1FnFn2=Fn12FnFn2=gn1

证毕。

2、 Fn+k=FkFn+1+Fk1Fn

还是考虑归纳,在 k2 该式成立,那么:

Fn+k=Fn+k1+Fn+k2=(Fk1+Fk2)Fn+1+(Fk2+Fk3)Fn=FkFn+1+Fk1Fn

证毕。

3、 kN,Fn|Fnk

归纳假设我们已经证明了对于 k1,Fn|Fn(k1) ,接下来:

Fnk=Fn(k1)+n=FnFn(k1)+1+Fn1Fn(k1)

因为 Fn|FnFn(k1)+1,Fn|Fn1Fn(k1) ,所以 Fn|Fnk

4、 Fa|Fb,a|b,(a,b2)

也就是说 (3) 是可逆的。

还是利用 (2) 并进行归纳,首先 Fn Fi,i<n ,那么对于 1k<n ,有:

Fn+kFkFn+1+Fk1Fn(modFn)FkFn+1(modFn)0(modFn)

然后对于 n+1k<2n 自然也可证明,然后一直归纳下去即可证明。

5、 (Fm,Fn)=F(m,n)

结合 (3) 、 (4) 感性理解一下就行了。

三、 多项式有关

1、 拉格朗日插值

学习笔记:拉格朗日插值

2、 FFT & NTT & FWT

FFT & NTT & FWT

?、 和 whk 有关的

1、 导数

定义:

定义比较简单,就是对于一个多项式 f ,求对于每个点 (i,fi) 的切线斜率是多少。

如何求:

直接做的话就是求 limΔx0fx+ΔxfxΔx 。谁都知道每次都这么求一遍实在是太麻烦了,于是我们发现有很多求导的式子本质相同,我们称这些本质为基本初等函数,我们只需要知道基本初等函数的求导公式即可。

基本初等函数求导公式:

(1)、 fx=c (c为常数) , fx=0

推导比较简单

(2)、 fx=xa,aRfx=axa1

如果 aN 的话,那我们直接上二项式定理:

fx=limt0fx+tfxt=limt0i=0a(ai)tixaixat

注意到对于求和中第 i=0 项与后面的 xa 相消,求和后面的除了 i=1 项,别的项最后都会保留 t 的因子,而 t0 ,所只需要管第 i=1 项 ,即 (a1)txa1 ,于是就有了 fx=axa1 ,虽然这是整数域上的,但是二项式定理这个东西他在实数域上也适用,所以可以这样来证明 公式(2)。

(3)、 fx=sin(x),fx=cos(x)

我们先将式子写出来:

fx=limt0sin(x+t)sin(x)t

然后咋证呢?把右边那个 sin(x+t) 拆开并不好处理,我们考虑一个叫 和差化积 的东西其中一个用来证明本题的就是:

sin(x)+sin(y)=2cosx+y2sinxy2

为啥对?令 x=a+b2,y=ab2 ,我们对原式展开得到, 2sina2cosb2 ,然后我们用 x,y 表示 a,b 即可得到 a=x+y,b=xy ,所以我们得到上式。

然后将公式代入原式,得到

fx=2×limt0cos(x+t2)sin(t2)t

然后求导时有一个重要结论是:

limt0sin(t)t=1

证明嘛,先咕咕咕,目前只会感性理解。

然后就直接上公式,将 sin(t2)t 替换为 12

最终得到

fx=cos(x)

(4)、 fx=cos(x),fx=sin(x)

和 (3) 一样。

(5)、 fx=ax,fx=axlnaa>0  and  a!=1

再次给出一个求导中的公式:

limx0(1+x)1x=e

证明还是先咕了。

然后直接上推导过程吧:

fx=limt0ax+taxt=axlimt0at1t

k=at1 ,那么 t=logak+1 ,于是:

limt0at1t=limk0klogak+1=limk011klogak+1=limk01loga(k+1)1k

我们看到了 limk0(k+1)1k=e ,说明 limt0at1t=ln(k+1)

于是代回原式得到:

fx=axlna

(6)、 fx=ex,fx=ex

(5)的特殊形式。

(7)、 fx=logax,fx=1xlna

类似于 (5) 但较为简单的推导:

fx=limt0loga(x+t)loga(x)t=limt0loga(1+tx)t=limt01xxtloga(1+tx)=1xlimt0loga(1+tx)xt=1xlna

(8)、 fx=lnxfx=1x

(7) 的特殊形式

求导中的四则运算与复合函数求导

加法

(f(x)+g(x))=f(x)+g(x)

减法

(f(x)+g(x))=f(x)g(x)

乘法

(f(x)g(x))=f(x)g(x)+f(x)g(x)

证明

(f(x)g(x))=limt0f(x+t)g(x+t)f(x)g(x)t=limt0f(x+t)g(x+t)+f(x+t)g(x)f(x+t)g(x)f(x)g(x)t=limt0(f(x+t)f(x))g(x)+(g(x+t)g(x))f(x+t)t=f(x)g(x)+g(x)f(x)

除法

(f(x)g(x))=f(x)g(x)g(x)f(x)g2(x)

证明

F(x)=f(x)g(x) ,有

F(x)g(x)+g(x)F(x)=f(x)

移个项

F(x)=f(x)g(x)F(x)g(x)=f(x)g(x)g(x)f(x)g2(x)

同时给出伪证一例

(f(x)g(x))=limt0f(x+t)g(x+t)f(x)g(x)t=limt=0f(x+t)g(x)f(x)g(x+t)g(x+t)g(x)t=limt=0f(x+t)g(x)+f(x+t)g(x+t)f(x)g(x)f(x)g(x+t)g(x+t)g(x)t(limt=0f(x+t)g(x+t)f(x)g(x)=0)=f(x)g(x)g(x)f(x)g2(x)

证伪原因是,在分母上有 t 时,不能直接认为 t=0 ,也就不能用 limt=0f(x+t)g(x+t)f(x)g(x)=0

复合函数求导

(f(g(x)))=f(g(x))g(x)

证明

(f(g(x)))=limt0f(g(x+t))f(g(x))t=limt0f(g(x)+g(x)t)f(g(x))tg(x)=limt0g(x+t)g(x)t=g(x)limt0f(g(x)+g(x)tf(g(x)))g(x)t=g(x)f(g(x))

posted @   lzrG23  阅读(80)  评论(6编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
点击右上角即可分享
微信分享提示