文章目录
友链
特征根法
分式
递推式为an+1 = (Aan+B) / (Can+D) (A,B,C,D是常数)
令an+1 = an = x,原式则为x = (Ax+B) / (Cx+D)
(1)若解得相同的实数根x0,则可以构造数列{1/(an-x0)}为等差数列
(2)若解得两个相异实根x1,x2,则构造{(an - x1)/(an - x2)}为等比数列(x1,x2的位置没有顺序,可以调换)
(3)如果没有实数根,那么这个数列可能是周期数列
整式
a
n
+
2
=
p
a
n
+
1
+
q
a
n
a_{n+2}=pa_{n+1}+qa_n
an+2=pan+1+qan
x
2
−
p
x
+
q
=
0
x^2-px+q=0
x2−px+q=0
if
x
1
!
=
x
2
x_1!=x_2
x1!=x2 then
a
n
=
A
x
1
n
−
1
+
B
x
2
n
−
1
a_n=Ax_1^{n-1}+Bx_2^{n-1}
an=Ax1n−1+Bx2n−1,其中
A
,
B
A,B
A,B可以使用待定系数法判断
else
a
n
=
(
A
+
n
B
)
x
1
n
−
1
a_n=(A+nB)x_1^{n-1}
an=(A+nB)x1n−1,其中
A
,
B
A,B
A,B可以使用待定系数法判断
编码
远码到补码永远是取反,最后一位加一(小数也同理)
1字节(byte)=8位(bit)
汉字
机内码与区位码
机内码高位字节=(区号)H+A0H
机内码低位字节=(位号)H+A0H
国标码与区位码
国标码高位字节=(区号)H+20H
国标码低位字节=(位号)H+20H
NP/NPC/NPHard
switch
case …:就相当于一个入口,会渗透下去,为了防止渗透,可以break
Master theorem
指针+运算符优先级
结合方向要注意
void swap(char * &str1,char * &str2){
cout<<'$'<<*str1<<' '<<++str1<<' '<<str1<<endl;
cout<<'$'<<*str1<<' '<<++str1<<' '<<*str1<<endl;
char *temp=str1;
str1=str2;
str2=temp;
}
&要注意
void swap(char * str1,char * str2){
char *temp=str1;
str1=str2;
str2=temp;
}
void swap(char * &str1,char * &str2){
char *temp=str1;
str1=str2;
str2=temp;
}
char *str1="GEEKS";
char *str2="For Greeks";
swap(str1,str2);
cout<<str1<<str2<<endl;
下面两者值不同
int &fun()
{
static int x = 10;
return x;
}
int &fun()
{
int x = 10;
return x;
}
fun()=100
cout<<fun()<<endl;
ptr是地址,*ptr是指针所指的值
int x=10;
int *ptr=&x;
cout<<ptr<<' '<<*ptr<<endl;
int * &ptr1=ptr;//= int *ptr1=&x
*ptr=100;
cout<<*ptr1<<ptr1<<' '<<&x<<endl;
1.++,--,*(指针取值),&(取地址)
右结合性
2.->*,.*
3.*/%
4.+,-
5.<<,>>
6.>=,<=,<,>
7.==,!=
8.&
按位且
9.^
10.|
11.||
12.?:
右结合性
13.=,<<=,&=
之类,右结合性
逻辑运算
Math
哥德巴赫猜想
任一大于2的偶数都可写成两个素数之和
质数
2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97
期望与概率
考虑f[i]为i到终点的期望步数,然后列方程求解即可
exLucas
放球问题
8类问题两个DP
圆排列要除n
容斥
Catalan
1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, …
h
[
n
]
=
∑
i
=
n
n
−
1
h
[
n
−
i
−
1
]
[
h
[
i
]
h[n]=\sum_{i=n}^{n-1}h[n-i-1][h[i]
h[n]=i=n∑n−1h[n−i−1][h[i]
h
[
n
]
=
C
2
n
n
−
C
2
n
n
+
1
h[n]=C_{2n}^n-C_{2n}^{n+1}
h[n]=C2nn−C2nn+1
h
[
n
]
=
C
2
n
n
n
+
1
h[n]=\frac{C_{2n}^n}{n+1}
h[n]=n+1C2nn
Hash
等概率下查找失败时的平均查找长度:算空,没找到
等概率下查找成功时的平均查找长度:算空,找到
- 开放寻址法:Hi=(H(key) + di) MOD m,i=1,2,…,k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列,可有下列三种取法:
1.1. di=1,2,3,…,m-1,称线性探测再散列;
1.2. di=12,-12,22,-22,⑶2,…,±(k)2,(k<=m/2)称二次探测再散列;
1.3. di=伪随机数序列,称伪随机探测再散列。 - 再散列法:Hi=RHi(key),i=1,2,…,k RHi均是不同的散列函数,即在同义词产生地址冲突时计算另一个散列函数地址,直到冲突不再发生,这种方法不易产生“聚集”,但增加了计算时间。
- 链地址法(拉链法)
- 建立一个公共溢出区