KMP 匹配算法

KMP 匹配算法

RE:从零开始的字符串学习

暴力做法

​ 首先将两个字符串首位对齐,逐位匹配,完成匹配后将模式串位置后移一位。

​ 时间复杂度为:O(nm)O(nm),其中 n,mn,m 分别表示主串和模式串的长度。

阅读全文 »

鸽巢原理及应用

鸽巢原理及应用

就简单的概述一下了

简单形式

​ 现有 n+1n+1 个物品,要将他们放入 nn 个盒子里,那么必定有 11 个盒子内至少有 22 个物品。

​ 显然,我们考虑每个盒子里都只能放置 11 个物品,那么会有 11 个物品剩余,所以易证。

阅读全文 »

求导基础及常用函数的导数

求导基础及常用函数的导数

一些微积分的基础知识。

关于求导

​ 我们对于一个函数所求的导函数实为:基于其图像中的每一点求其斜率的函数表达式。

f(x)f`(x) 表示函数 f(x)f(x) 的导函数,那么就有:

limh0f(x+h)f(x)h\lim_{h\rightarrow0}\frac{f(x+h)-f(x)}{h}

阅读全文 »

整数分块

整数分块

现在来补一下小知识

例子

i=1nni\sum_{i=1}^{n}\frac{n}{i}

​ 求上式。

阅读全文 »

牛顿二项式定理

牛顿二项式定理

( |x| < |y| )(x+y)α=k=0(αk)xkyαk(x+y)^{\alpha} = \sum_{k=0}^{\infty} \binom{\alpha}{k} {x}^{k} {y}^{\alpha-k} \tag{0 $\leq$ |x| < |y| }

阅读全文 »

容斥:错位排列

容斥:错位排列

​ 令 {1,2,...,n1,2,...,n} 的一个错位排列,是一个排列 a1,a2,...,an{a_1,a_2,...,a_n},使得 a11,a22,...,ann{a_1}\ne{1},{a_2}\ne{2},...,{a_n}\ne{n}

​ 令 DnD_n 表示大小为 nn 的错位排列的方案数。

阅读全文 »

常用组合数公式的证明

常用组合数公式的证明

​ 证明中可能用到的一些前置知识,这里我不再给出他们证明:

(1)(x+y)n=k=0n(nk)xkynk(x+y)^n=\sum_{k=0}^n{\binom{n}{k}{x}^{k}{y}^{n-k}}\tag{1}

(2)(n+1k+1)=(nk+1)+(nk)\binom{n+1}{k+1}=\binom{n}{k+1}+\binom{n}{k}\tag{2}

​ 上述是著名的二项式公式和帕斯卡公式,下面我们将利用他们对另外的一些组合数公式予以证明。

阅读全文 »