微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初赛补充知识

英文缩写

%   计算机辅助制造(CAM,Computer Aided Manufacturing)
  计算机辅助设计(Computer Aided Design)
  计算机辅助教学(Computer Aided Instruction)

进制

%    x   B = ( x ) 2 x\ B=(x)_2 x B=(x)2
   x   O = ( x ) 8 x\ O=(x)_8 x O=(x)8
   x   D = ( x ) 10 x\ D=(x)_{10} x D=(x)10
   x   H = ( x ) 16 x\ H=(x)_{16} x H=(x)16

排序

%   选择排序不稳定 ,希尔排序的时间复杂度为 Θ ( n 1.3 ) ∼ Θ ( n 2 ) \Theta(n^{1.3})\sim\Theta(n^2) Θ(n1.3)Θ(n2)
  给 n n n 个数排序的最坏情况下的最少比较次数 ⌈ log ⁡ 2 n ! ⌉ \lceil\log_2 n!\rceil log2n!⌉
  给 n n n 个数排序的最坏情况下的最少交换次数 n − 1 n-1 n1

二叉树

%   由于度数=节点数-1
  因而有 2 ∗ n 2 + n 1 = n 2 + n 1 + n 0 − 1 2*n_2+n_1 = n_2 + n_1 + n_0 - 1 2n2+n1=n2+n1+n01
   n 2 = n 0 − 1 n_2 = n_0 -1 n2=n01
  
 已知完全二叉树有 n n n 个点,求其叶子结点数量
 我们有 n 2 = n 0 − 1 n_2=n_0-1 n2=n01  若 n n n 为奇数,则 n 1 = 0 n_1=0 n1=0,否则 n 1 = 1 n_1=1 n1=1
  因此当且仅当 n n n 为奇数时,叶子结点数量等于 n + 1 2 \frac{n+1}{2} 2n+1
  当 n n n 为偶数时,叶子结点数量等于 n 2 \frac{n}{2} 2n

卡特兰数


%   令 h ( 0 ) = h ( 1 ) = 1 h(0)=h(1)=1 h(0)=h(1)=1,则卡特兰数第 n n n 项为
h ( n ) = ∑ i = 0 n − 1 h ( i ) h ( n − i − 1 ) = ∑ i = 1 n h ( i − 1 ) h ( n − i ) h(n)=\sum_{i=0}^{n-1}h(i)h(n-i-1)=\sum_{i=1}^nh(i-1)h(n-i) h(n)=i=0n1h(i)h(ni1)=i=1nh(i1)h(ni)

%   用生成函数方法很容易推倒得到其另类递推式
h ( n ) = C 2 n n n + 1 h(n)=\frac {C_{2n}^n}{n+1} h(n)=n+1C2nn

%   同理,递推关系的另类解为
h ( n ) = C 2 n n − C 2 n n − 1 h(n)=C_{2n}^n-C_{2n}^{n-1} h(n)=C2nnC2nn1

出入栈问题


 一个足够大的栈的进栈序列为 1 , 2 , 3 , ⋯ , n 1,2,3,⋯,n 1,2,3,,n 时有多少个不同的出栈序列?

 令答案为 h ( n ) h(n) h(n),显然 h ( 0 ) = h ( 1 ) = 1 h(0)=h(1)=1 h(0)=h(1)=1(没有元素时有一种方案,即出栈序列为空),不妨假设最后一个出栈的元素为 k k k,则可以发现,元素 1 ∼ ( k − 1 ) 1\sim (k-1) 1(k1) k k k 元素进栈前就进栈并出栈,元素 ( k + 1 ) ∼ n (k+1)\sim n (k+1)n k k k 元素进栈后出栈前,完成了进栈和出栈。
  那么前 k − 1 k-1 k1 个元素进栈并出栈共有 h ( k − 1 ) h(k-1) h(k1) 种方案,后 n − k n-k nk 个元素进栈共有 h ( n − k ) h(n-k) h(nk) 种方案,因而总共有 h ( n − k ) h ( k − 1 ) h(n-k)h(k-1) h(nk)h(k1) 种方案,由于每个元素作为最后一个出栈的元素时,产生的出栈序列互不相同,因而有
h ( n ) = ∑ i = 1 n h ( i − 1 ) h ( n − i ) = C 2 n n n + 1 h(n)=\sum_{i=1}^nh(i-1)h(n-i)=\frac{C_{2n}^n}{n+1} h(n)=i=1nh(i1)h(ni)=n+1C2nn


变1 比如 n n n 个人拿 5 5 5 元、 n n n 个人拿 10 10 10 元买物品,物品 5 5 5 元,老板没零钱,问有几种排队方式,使得店主能够完成找零?

 处理拿着五元的人看做元素进栈,处理拿着十元的人当做出栈,那么原问题变成了经典的出入栈问题,那么对于同样的 n n n 个拿着5元的人,同样的 n n n 个拿着10元的人,共有 h ( n ) h(n) h(n) 种排列方式。
  特别地,对于不同的 n n n 个拿着 5 5 5 元的人,不同的 n n n 个拿着10元的人,共有 h ( n ) × n ! × n ! h(n)\times n!\times n! h(n)×n!×n! 种排队方案。


变2 在n*n的格子中,只在下三角行走,每次横或竖走一格,有多少中走法?

 可以发现,能向上走 i i i 步的条件是已经向右走了 i i i 步,因此将向右走看做入栈,向上走看成出栈,问题转换为出入栈问题,因而答案为卡特兰数。

二叉树构成问题

 有 n n n 个结点,问总共能构成几种不同的二叉树。

 令答案为 h ( n ) h(n) h(n),枚左子树的节点数,得
h ( n ) = ∑ i = 0 n − 1 h ( i ) h ( n − i − 1 ) h(n)=\sum_{i=0}^{n-1}h(i)h(n-i-1) h(n)=i=0n1h(i)h(ni1)  因此 h ( n ) h(n) h(n) 即为卡特兰数。

其他

区位码

区位码(10)=区号(10)*100+位号(10)
国标码=区位码+2020H
内码=国标码+8080H
内码=区位码+A0A0H

区号:30
位号:63
区位码:3063
国标码:9EBF
内码:bedF

IP地址分类

A类地址(可以在internet上跑):0开头
B类地址(可以在internet上跑):10开头
C类地址(局域网):110开头
D类地址(局域网):1110开头

二次探测法

i i i 次冲突寻找 i 2 i^2 i2

信号采样、量化

A/D转换器:模拟信号转换成数字信号
D/A转换器:数字信号转换成模拟信号

错排问题

f ( n ) f(n) f(n) 为对 n n n 个元素的一个排列重新排列,每个元素都不在其原来的位置上的方案数量,则: f ( n ) = ( n − 1 ) ( f ( n − 1 ) + f ( n − 2 ) ) f(n)=(n-1)(f(n-1)+f(n-2)) f(n)=(n1)(f(n1)+f(n2))(感性)证明:
设我们把第 n n n 个元素放在了第 k k k 个位置,有 n − 1 n-1 n1 种情况.
然后考虑放元素 k k k

  1. 把元素 k k k 放在位置 n n n,则由剩余元素的错排组成,即 f ( n − 2 ) f(n-2) f(n2)
  2. 把元素 k k k 不放在位置 n n n,则对于元素 i ( i ≠ k ) i(i\not=k) i(i=k),不能放在位置 i i i,对于元素 k k k,不能放在位置 n n n,相当于 n − 1 n-1 n1 个元素的错排问题,即 f ( n − 1 ) f(n-1) f(n1)

递归方程求解

%   一般地,形如 T ( n ) = a T ( n b ) + f ( n ) T(n)=aT\left(\frac{n}{b}\right)+f(n) T(n)=aT(bn)+f(n)

%   的方程为最基本的递归方程。

主定理

以下为假的主定理。

1. 若 $f(n)<n^{\log_b a}$,则 $T(n)=\Theta(n^{\log_b a})$。
2. 若 $f(n)>n^{\log_b a}$,且 $af\left(\dfrac nb\right)\leqslant cf(n)$,则 $T(n)=f(n)$。
3. 若 $f(n)=n^{\log_b a}$,则 $T(n)=\Theta(n^{\log_b a}\log n)$
4. 若 $f(n)$ 为非多项式,且不等于 $n^{\log_b a}$,则主定理不适用。
  1. 若存在常数 ϵ > 0 \epsilon>0 ϵ>0,使得 f ( n ) = O ( n ( log ⁡ b a ) − ϵ ) f(n)=\text{O}(n^{(\log_b a)-\epsilon}) f(n)=O(n(logba)ϵ),则 T ( n ) = Θ ( n log ⁡ b a ) \text{T}(n)=\Theta(n^{\log_ba}) T(n)=Θ(nlogba)
  2. 若存在常数 k ⩾ 0 k\geqslant 0 k0,使得 f ( n ) = Θ ( n log ⁡ b a log ⁡ 2 k n ) f(n)=\Theta(n^{\log_b a}\log^k_2 n) f(n)=Θ(nlogbalog2kn),则 T ( n ) = Θ ( n log ⁡ b a log ⁡ 2 k + 1 n ) \text{T}(n)=\Theta(n^{\log_b a}\log^{k+1}_2 n) T(n)=Θ(nlogbalog2k+1n)
  3. 若存在常数 ϵ > 0 \epsilon>0 ϵ>0,使得 f ( n ) = Θ ( n ( log ⁡ b a ) + ϵ ) f(n)=\Theta(n^{(\log _ba)+\epsilon}) f(n)=Θ(n(logba)+ϵ)同时存在常数 c < 1 c<1 c<1 和充分大的 n n n 使得 a f ( n b ) ⩽ c f ( n ) af\left(\dfrac nb\right)\leqslant cf(n) af(bn)cf(n),则 T ( n ) = Θ ( f ( n ) ) \text{T}(n)=\Theta(f(n)) T(n)=Θ(f(n))

例1 考虑二分的时间复杂度
T ( n ) = T ( n 2 ) + Θ ( 1 ) \text{T}(n)=\text T\left(\frac n2\right)+\Theta(1) T(n)=T(2n)+Θ(1)

 考虑 Θ ( 1 ) = Θ ( n log ⁡ 2 1 log ⁡ 2 0 n ) \Theta(1)=\Theta(n^{\log_2 1}\log_2^0 n) Θ(1)=Θ(nlog21log20n),因而有 T ( n ) = Θ ( log ⁡ 2 n ) \text T(n)=\Theta(\log_2 n) T(n)=Θ(log2n)


例2 考虑二叉树遍历的时间复杂度
T ( n ) = 2 T ( n 2 ) + Θ ( 1 ) \text{T}(n)=2\text T\left(\frac n2\right)+\Theta(1) T(n)=2T(2n)+Θ(1)

 考虑 Θ ( 1 ) = Θ ( n log ⁡ 2 2 − 1 ) \Theta(1)=\Theta(n^{\log_2 2-1}) Θ(1)=Θ(nlog221),因而有 T ( n ) = Θ ( n ) \text T(n)=\Theta(n) T(n)=Θ(n)


例3 考虑多项式求逆的时间复杂度
T ( n ) = T ( n 2 ) + Θ ( n log ⁡ 2 n ) \text{T}(n)=\text T\left(\frac n2\right)+\Theta(n\log_2 n) T(n)=T(2n)+Θ(nlog2n)

 考虑 Θ ( n log ⁡ 2 n ) > Θ ( n log ⁡ 2 1 ) \Theta(n\log_2 n)>\Theta(n^{\log_2 1}) Θ(nlog2n)>Θ(nlog21),且对于任意 c < 1 c<1 c<1 和足够大的 n n n,都有 Θ ( n 2 log ⁡ 2 n 2 ) = Θ ( n 2 log ⁡ 2 n − n 2 ) ⩽ c Θ ( n log ⁡ 2 n ) \Theta\left(\frac n2\log_2 \frac n2\right)=\Theta(\frac n2\log_2 n-\frac n2)\leqslant c\Theta(n\log_2 n) Θ(2nlog22n)=Θ(2nlog2n2n)cΘ(nlog2n)  因而有 T ( n ) = Θ ( n log ⁡ 2 n ) \text T(n)=\Theta(n\log_2 n) T(n)=Θ(nlog2n)


例4 考虑分治FFT的时间复杂度
T ( n ) = 2 T ( n 2 ) + Θ ( n log ⁡ 2 n ) \text{T}(n)=2\text T\left(\frac n2\right)+\Theta(n\log_2 n) T(n)=2T(2n)+Θ(nlog2n)

 考虑 Θ ( n log ⁡ 2 n ) = Θ ( n log ⁡ 2 2 log ⁡ 2 1 n ) \Theta(n\log_2 n)=\Theta(n^{\log_2 2}\log_2^1 n) Θ(nlog2n)=Θ(nlog22log21n),因而有
T ( n ) = Θ ( n log ⁡ 2 1 log ⁡ 2 2 n ) = Θ ( n log ⁡ 2 2 n ) \text T(n)=\Theta(n^{\log_2 1}\log_2^2 n)=\Theta(n\log_2^2 n) T(n)=Θ(nlog21log22n)=Θ(nlog22n)


期望

 在一条长度为1的线段上任取两个端点,求线段长度的期望。(NOIP2018提高)

 解法1:设线段端点的位置分别为 x , y x, y x,y,则线段的长度的期望等于在原线段上再取一点 z z z,使得 z ∈ [ x , y ] z\in[x,y] z[x,y] 的概率。
  考虑 x , y , z x,y,z x,y,z 的排列,共有 3 ! 3! 3! 种方案,由于 x , y x,y x,y 在线段上等概率取点,因此这些方案的概率也相等,其中 z z z 排在中间的方案有两种,因而答案为 2 / ( 3 ! ) = 1 / 3 2/(3!)=1/3 2/(3!)=1/3
  解法2:随机 x ∈ [ 0 , L ] x\in[0,L] x[0,L],则线段0到 x x x 的长度期望为
∫ 0 L x  d x L = 1 2 L 2 − 1 2 0 2 L = L 2 \frac{\int_0^Lx\ \text dx}{L}=\frac{\frac 12L^2-\frac 12 0^2}{L}=\frac L2 L0Lx dx=L21L22102=2L  然后我们考虑原问题的答案,在 [ 0 , 1 ] [0,1] [0,1] 上枚举断点 t t t,在前面的 0 ∼ t 0\sim t 0t 之间选一个 x x x,则 x x x t t t 的期望等于0到 x x x 的答案,为 x 2 \frac {x}2 2x,出现概率为 x 1 \frac x1 1x,然后考虑在 t ∼ 1 t\sim 1 t1 之间选右端点 y y y,则 t t t y y y 的期望长度为 1 − x 2 \frac {1-x}2 21x,出现概率为 1 − x 2 \frac {1-x}2 21x,因而 x x x y y y 的期望长度为
L e n = [ ∫ 0 1 ( x 2 × x 1 + 1 − x 2 × 1 − x 1 ) d x ] ÷ 1 = ∫ 0 1 ( x 2 − x − 1 2 ) d x = ( 1 3 × 1 3 − 1 2 × 1 2 − 1 2 ) = 1 3 \begin{aligned} Len&= \left[\int_0^1\left(\frac x2\times \frac x1+\frac {1-x}2\times\frac{1-x}1\right)\text dx\right]\div 1\\ &=\int_0^1 \left(x^2-x-\frac 12\right)\text dx\\ &=\left(\frac 13\times 1^3-\frac 12\times 1^2-\frac 12\right)\\ &=\frac 13 \end{aligned} Len=[01(2x×1x+21x×11x)dx]÷1=01(x2x21)dx=(31×1321×1221)=31

康托展开

%   对于第 k k k 小的 n n n 个数的全排列,其康托展开值定义为 X = ∑ i = 1 n a i ( i − 1 ) ! X=\sum_{i=1}^na_i(i-1)! X=i=1nai(i1)!  可以证明,在数值上有 k − 1 = X k-1=X k1=X
%   如此,我们可以通过其康托展开值求出原来的排列。
 求排列 1 5 3 4 2 6 的下 200 个排列。

 首先求出给定排列的康托展开值,为 80,这说明这是第 81 个小的排列,换言之,我们需要求出第 200+81=281 小的排列,因此,其康托展开值位280.
  先考虑第一位, 280 ÷ ( 5 ! ) = 2 … … 40 280\div(5!)=2……40 280÷(5!)=2……40,因此说明第一位后面有2个比第一位小的数,因此第一位为3。
  然后第二位, 40 ÷ ( 4 ! ) = 1 … … 16 40\div(4!)=1……16 40÷(4!)=1……16,因此说明第二位后面有1个比第二位小的数,因此第二位为2。
  第三位, 16 ÷ ( 3 ! ) = 2 … … 4 16\div(3!)=2……4 16÷(3!)=2……4,因此说明第三位后面有2个比第三位小的数,因此第三位为5(2,3前面有了,后面有1,4 比 5 小,所以这一位是5)
  第四位, 4 ÷ ( 2 ! ) = 2 … … 0 4\div (2!)=2……0 4÷(2!)=2……0,因此说明第四位后面有两个比第四位小的数,因此第四位为6(2,3,5前面有了,后面必须有1,4两个比这个位置大,所以是6)
  第五位, 0 ÷ ( 1 ! ) = 0 … … 0 0\div (1!)=0……0 0÷(1!)=0……0,因此这一位是没有被填上的数中最小的那一个,所以为 1。
  第六位, 0 ÷ ( 0 ! ) = 0 … … 0 0\div (0!)=0……0 0÷(0!)=0……0,因此这一位是没有被填上的数中最小的那一个,所以为 4。
  因此,求排列 1 5 3 4 2 6 的下 200 个排列为 3 2 5 6 1 4。

C++运算符优先级

大致等级划分:括号运算符 = = = 成员运算符 > > > 单目运算符 > > > 双目运算符
        > > > 三目运算符 > > > 赋值运算符 > > > 逗号运算符。

双目运算符内部等级:

  1. */%。乘除模。
  2. +-。加减。
  3. <<>>。位移。
  4. ><>=<=比较大小。
  5. ==!=。判断相等。
  6. &。按位与。
  7. ^。按位异或。
  8. |。按位或。
  9. &&。逻辑与。
  10. ||。 逻辑或。

结合顺序:仅有双目运算符、括号运算符、成员运算符为从左向右,其余均为从右向左。

注意重载时逻辑与和逻辑或后,该运算符不再拥有短路的特性。

离散数学逻辑运算

A ∧ B A∧B AB,合取,等价于逻辑与。
A ∨ B A∨B AB,析取,等价于逻辑与。
¬ A \neg A ¬A,表示逻辑非。
A → B A→B AB A A A 蕴含 B B B,即 A A A 的正确必然导致 B B B 的正确。

图像存储

%   真彩色:一般占32位/像素,也叫全彩色,指的是RBG 8:8:8的图像。
  伪彩色:将颜色做成颜色表,读取时直接读取对应信息,颜色会有所损失。
  直接色:仍然使用查找表,但使用直接色在显示器上显示彩色图像看起来更加真实自然。

排列组合

%   从 n n n 个数中选 k k k 个数(可以重复选)的方案数为 C ( n + r − 1 , r ) C(n+r-1,r) C(n+r1,r)

第三代移动通信技术标准

  1. 中国移动发展产业化程度低的TD-SCDMA
  2. 中国联通合并中国网通发展WCDMA
  3. 中国电信收购联通CDMA网络后主力发展CDMA2000。

数据库

数据库有层次型数据库、关系型数据库、网状数据库
层次数据库中数据的逻辑结构是
关系数据库中数据的逻辑结构是二维表
网状数据库中数据的逻辑结构是链接指针

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐