I will no longer be |

yabnto

园龄:2年8个月粉丝:14关注:17

数学集

向量

(有方向的值叫做向量)

定义?

这个东西放在平面直角坐标系里会好理解一些所以开始吧:

向量是有一个起点(x1,y1)与一个终点(x2,y2)的,而这个向量的值我们就表示为:(x2x1,y2y1)

向量是可以平移的,由于平移,那么起点与终点坐标之差是不变的,所以移动向量,向量的值也不便。

那么放在平面直角坐标系时,我们可以把起点就设为原点,那么这个向量的值就将会是终点的坐标,相当于是将其平移,使起点与原点重合。

计算?

向量加法

课本里有一个三角形法则平行四边形法则,我感觉没有必要,因为两个向量相加,我们可以看成一个点的移动,由于已经放入了平面这叫坐标系,那么我们的移动方向其实就是移动值的正负,于是先按照第一条向量的长度要求来移动,再按照第二个向量的长度要求来移动即可。

向量数乘

(别问我减法呢?)

数乘指的是一个数乘一个向量,相当于是一堆这个向量相加,所以将向量的每个值乘一个要乘的数即可。

那么一个向量的相反向量,即往相反方向走,既是将向量乘一个 1

向量减法

与其做减法,不如做加法,直接将减数乘 1 然后相加即可。(啊,说的好抽象)

点积(数量积)

|a| 指向量长度即起点终点之间的欧氏距离。

定义为:ab=|a|×|b|×cos(Θ)

我们有:|a|2=aa

在平面直角坐标系中,两向量 a(x1,y1)b(x2,y2) 的向量积为:x1x2+y1y2 证明如下:

设一个平面直角坐标系,将两个单位设为 i,j,两个向量 a,b,坐标分别为 (x1,y1)(x2,y2)

ab=|a|×|b|×cos(Θ)=(ix1+jy1)(ix2+jy2)=iix1x2+ijx1y2+ijy1x2+jjx2y2=x1x2+y1y2

叉积(我终于不知道这个东东叫个啥了)

定义为:a×b=|a|×|b|×sin(Θ)

在平面直角坐标系中,两向量 a(x1,y1)b(x2,y2) 的叉积为:x1y2x2y1,证明如下:

设一个平面直角坐标系,将两个单位设为 i,j,两个向量 a,b,坐标分别为 (x1,y1)(x2,y2)

a×b=|a|×|b|×sin(Θ)=(jx1+iy1)×(jx2+iy2)=jx1jx2+jx1iy2+iy1x2+iy1iy2=x1y2y1x2

叉积求面积

这里只用三角形做示范,因为其它的都可以被分成一堆的三角形。

有三角形 ABC

面积公式中有一个为底乘高除二,然后找到一个点 A,像另外两点 B,C 做向量,叉积的定义里的 |b|×sin(Θ),放到这里就是 |AC|×sin(Θ),那么对于这个东西,其实就是过 CAB 做垂,垂足为 D,那么叉积会变成:AB×AD,最后除个二,其实就是面积公式

康托展开

对于 1n 的全排列,建立排名和排列的双向映射

理解:由排列映射到排名可以视为一种哈希。

原理:设有 1n 的某个排列 pi,其排名应该等于小于该排列的数量 +1

i=1nai(ni)! (ai=j=i+1n(p[j]<p[i]))

卡特兰数

是一种数列,其通项公式的一种形式为:Catn=1n+1×C2nn

另一种为:Catn=C2nnC2nn1

递归定义式

  1. Catn=i=0n1Cati×Catni1

理解:对于 n 个点构成的二叉树,其形态有 Catn

  1. Catn=Catn1×4n2n+1

使用场景

递归式 1 适用于 n 不大的情况下求卡特兰数,不用处理除法。(n500)

例1. 01 排列问题
给定 n0n12n 个元素的数列,要求该数列的前缀,0 的个数不少于 1 的个数,求方案数。
起点左下角 (0,0),重点 (n,n),往右走为 0,往上走为 1,那么路径方案书为:C2nn

01 合法排列对应的方案,应该不越过左图红色对角线

将原路径第一次接触新对角线(紫色)之后的路径沿新对角线反转,则原路径与以 (n1,n+1) 结尾的新路径一一对应。

那么求原路径中的非法路径数量等价于求以 (n1,n+1) 结尾的路径数量:C2nnC2nn1=Catn

例2. 给定 n 个左括号和 n 个右括号,其合法的匹配序列的方案数为卡特兰数

例3. 给定 n 个元素,从 1n,其进出栈的不同方案数为卡特兰数

例4. 给定 n 条边的凸多边形,用 n3 条边划分成 n2 个三角形,其方案数为卡特兰数

prufer 序列

是一种树形结构与序列相互映射的规则。

区别

dfs 序,将一棵子树映射为一段连续的区间
欧拉序
二叉搜索树
prufer 序列是和树的双向唯一映射,同时包含了结点的读书与连接关系,将构造树转化为构造序列,将统计树的信息转化为统计序列的信息,将树 dp 转化成序列 dp

如何得到

  1. 统计树上所有结点的度数 degi
  2. 找到所有度数为 1 的结点中编号最小的那个 cur
  3. 令序列 pi=facur,同时将 degfacur1
  4. 重复 2,3,直到剩余两个点时结束
void to_p() {
int k;
for (int i = 1; i <= n; i++) {
if (deg[i] == 1) {
k = i;
break;
}
}
for (int i = 1, j = k; i <= n - 2; i++) {
int nf = fa[j];
p[i] = nf;
deg[nf]--;
if (deg[nf] == 1 && nf < k) {
j = nf;
continue;
}
for (k++, j = k; deg[k] != 1; k++, j = k) {
}
}
}

性质

  1. 结点 xprufer 序列中出现次数加 1 就是 degx
  2. 编号最大的点 n 一定是剩下的 2 个结点之一
  3. 对于 n 个点的完全图,其生成树的方案数为 nn2
  4. 对于 n 个点的无根树,其树的方案书为 nn2
  5. 对于 n 个点的有根树,其树的方案书为 nn1
  6. 对于 n 个点,约定点 i 的度数为 di,满足条件的树的方案数为 (n2)!i=1n(di1)!

还原

void to_t() {
for (int i = 1; i <= n; i++) {
deg[i]++, deg[p[i]]++;
}
int k, cnt = 0, j;
for (int i = 1; i <= n; i++) {
if (deg[i] == 1) {
k = j = i;
break;
}
}
for (int i = 1; i <= n - 2; i++) {
int nf = fa[j] = p[i];
deg[nf]--;
if (deg[nf] == 1 && nf < k) {
j = nf;
continue;
}
for (k++, j = k; deg[k] != 1; k++, j = k) {
}
}
fa[j] = n;
}

基本计数原理

  1. 加法原理:解决一件事情,有 k 类方法,第 i 类方法有 ai 种选择,那么总方案数 =i=1kai
  2. 乘法原理:解决一件事情,有 k 个步骤,第 i 个步骤有 ai 种选择,那么总方案数 =i=1kai

排列与组合

  1. 排列:将 n 个元素选取 k 个出来构成一组排列,方案数 =Ank=n!(nk)!
  2. 组合:将 n 个元素选取 k 个出来构成一组集合,方案数 =Cnk=Ankk!=n!k!(nk)!

多重集的排列数与组合数

多重集排列数是指 k 种元素,第 i 种元素有 ai 个,总元素个数为 n,其全排列的方案数 =n!i=1kai!
多重集组合数 1:
设有 k 种元素,第 i 种元素的个数为 ai,取共计 r 个元素构成集合,且 rai,其组合数 =Ck1r+k1(将 r 个元素分成 k 类,可以有一类没有)

组合数常用性质

  1. i=0nCni=2n
  2. Cnm=Cnnm
  3. Cnm=Cn1m1+Cn1m

二项式定理

(a+b)n=i=0nCni×ai×bni

组合数计算

  1. 杨辉三角递推计算
  2. 定义式计算

错位排序

n 个位置和 n 个小球,编号均为 (1,n),所有小球 i 不放入位置 i 的方案总和为 fn

  1. 若前面的已错位排序,那么只要将当前的与之前的换一下即可:(i1)fi1
  2. 若前面恰好有一个没错位,那么只要将当前的与前面的换一下即可:(i1)fi2(有 i2 已经错位排序)
  3. 若都不满足,一次操作必然不可能使它错位,所以贡献为 0
    所以 fi=(i1)(fi1+fi2)

卢卡斯定理

对于正整数 n,m,p,若 1mnp 为质数那么 CnmCnmodpmmodp×Cnpmp(modp)

变式

ainp 进制下的第 i 位,设 bimp 进制下的第 i
CnmCaibi(modp)

费马小定理

p 为质数,且 pa,有 ap11(modp),不给证明,只记结论。

  1. 那么 xa 在模 p 意义下为 xaxaap1xap2(modp)

  2. a 在模 p 意义下的乘法逆元为 ap2p 为质数,pa
    记作:a1=ap2(modp)

位运算的一个定理

x+y=2(x&y)+(xy)

xy=(x&y)+(xy)

线性计算逆元的小技巧:

设:a=pxb=pmodx
ax+bp(modp)
axb(modp)
xba(modp)
x1ab(modp)
x1a1b(modp)
x1ab1(modp)
所以可以递推求解,对于 b1 之前显然已经求解过了,所以时间复杂度是线性的。

(px1x)分解因式

首先可以将式子拆成:(p1)y,然后构造式子 y,使得 (p1)y=(px1x)
首先式子需要一个 px,所以 y 需要加上 px1y 变成:
y=(px1)
那么此时 (p1)y=pxpx1,我们发现多了一个 px1,所以删掉一个 px1y 变成:
y=(px1+px2)
然后以此类推……
到最后便成了 y=(px1+px2+px3++p0),将 y 带入式子,则变成 (p1)(px1+px2+px3++p0)
所以可以扩展 (axbx),则应该为 (ab)(abx1+abx2+abx3++ab0)

本文作者:yabnto

本文链接:https://www.cnblogs.com/ybtarr/p/17410204.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yabnto  阅读(56)  评论(6编辑  收藏  举报
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 光辉岁月 Audio artist
  3. 3 名前を呼ぶよ Audio artist
  4. 4 战歌 Audio artist
  5. 5 時を越えた想い Audio artist
  6. 6 所念皆星河 Audio artist
  7. 7 See you again Audio artist
See you again - Audio artist
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起