一、基础知识
简称
N
O
I
P
:
全
国
青
少
年
信
息
学
奥
林
匹
克
联
赛
(
1995
)
NOIP:全国青少年信息学奥林匹克联赛(1995)
NOIP:全国青少年信息学奥林匹克联赛(1995)
N
O
I
:
全
国
青
少
年
信
息
学
奥
林
匹
克
竞
赛
(
1984
)
NOI:全国青少年信息学奥林匹克竞赛(1984)
NOI:全国青少年信息学奥林匹克竞赛(1984)
C
N
C
C
:
中
国
计
算
机
大
会
CNCC:中国计算机大会
CNCC:中国计算机大会
C
T
S
C
:
国
际
信
息
学
奥
林
匹
克
中
国
队
选
拔
赛
CTSC:国际信息学奥林匹克中国队选拔赛
CTSC:国际信息学奥林匹克中国队选拔赛
C
S
P
:
计
算
机
非
专
业
级
别
的
软
件
能
力
认
证
CSP:计算机非专业级别的软件能力认证
CSP:计算机非专业级别的软件能力认证
A
P
I
O
:
亚
洲
与
太
平
洋
地
区
信
息
学
奥
赛
(
2007
)
APIO: 亚洲与太平洋地区信息学奥赛(2007)
APIO:亚洲与太平洋地区信息学奥赛(2007)
5
G
:
第
五
代
移
动
通
用
技
术
5G:第五代移动通用技术
5G:第五代移动通用技术
图
灵
奖
由
美
国
计
算
机
协
会
(
A
C
M
)
于
1966
年
设
立
图灵奖由美国计算机协会(ACM)于1966年设立
图灵奖由美国计算机协会(ACM)于1966年设立
蓝牙,wifi,GPRS,平流层气球通信,广带无线接入,GSM,无绳系统,蜂窝数字数据分组系统(CDPD), i–Mode,WAP,LAS-CDMA(大区域同步码分多址联接)属于无线通讯技术
网络模型:
OSI七层参考模型:应用层,表示层,会话层,传输层,网络层,链路层,物理层
TCP/IP四层参考模型:
应用层:
T
e
l
e
n
t
:
远
程
登
录
协
议
Telent:远程登录协议
Telent:远程登录协议
F
T
P
:
文
件
传
输
协
议
FTP:文件传输协议
FTP:文件传输协议
S
M
T
P
:
简
单
邮
件
传
输
协
议
(
发
邮
件
)
SMTP:简单邮件传输协议(发邮件)
SMTP:简单邮件传输协议(发邮件)
p
o
p
/
p
o
p
3
:
收
邮
件
协
议
pop/pop3:收邮件协议
pop/pop3:收邮件协议
I
A
M
P
:
邮
件
访
问
协
议
IAMP:邮件访问协议
IAMP:邮件访问协议
传输层:
T
C
P
:
传
输
控
制
协
议
TCP:传输控制协议
TCP:传输控制协议
U
D
P
:
数
据
报
协
议
UDP:数据报协议
UDP:数据报协议
网络层:
I
P
:
网
络
协
议
IP:网络协议
IP:网络协议
I
G
M
P
:
组
管
理
协
议
IGMP:组管理协议
IGMP:组管理协议
网络接口层
网络分类:
L
A
N
:
局
域
网
LAN:局域网
LAN:局域网
M
A
N
:
城
域
网
MAN:城域网
MAN:城域网
W
A
N
:
广
域
网
WAN:广域网
WAN:广域网
协议/缩写:
TCP:传输控制协议(Transmission Control Protocol)
IP:网络协议(Internet Protocol)
FTP:文件传输协议(File Transfer Protocol)
HTTP:超文本传输协议(Hyper Text Transfer Protocol)
SMTP:简单邮件传输协议(Simple Mail Transfer Protocol)
MIME:电子邮件扩展协议(Multipurpose Internet Mail Extensions)
pop/pop3:收邮件协议
IMAP:邮件访问协议(Internet Mail Access Protocol)
HTML:超文本标记语言
URL:统一资源定位器(Uniform Resource Locator)
WTO:世界贸易组织
OSI:开放系统互联
ISO:国际标准化组织
CAI:计算机辅助教学
CAD:计算机辅助设计
CAM:计算机辅助制造
CAT:计算机辅助测试
CAE:计算机辅助工程分析
CBE:计算机辅助教育
IP地址:
A:1.0.0.1~126.255.255.254
B:128.1.0.1~191.255.255.254
C:192.0.0.1~253.255.255.254
注:
- 中间没有127是因为127是网卡自身地址
- 同时地址最高只有255,不能超过255
IPv6地址
形如
X
:
X
:
X
:
X
:
X
:
X
:
X
:
X
X:X:X:X:X:X:X:X
X:X:X:X:X:X:X:X,每个X是16进制的数。
一般来说IPV6是严格的八位,但是如果地址中间有形如
0000
:
0000
:
0000
…
…
:
0000
0000:0000:0000……:0000
0000:0000:0000……:0000的连续的0,可以用
:
:
::
::代替
否则就需要有严格的八位
操作系统:
Windows:窗口式操作系统
DOS:磁盘操作系统
Solaris:UNIX的衍生版本
UNIX:网络操作系统
Netware
Mac OS
计算机语言:
高级语言:
- 编译:
P a s c a l ; F o r t r a n ( 第 一 个 面 向 科 学 计 算 的 高 级 语 言 ) ; C o b o l ; C ; C + + Pascal;Fortran(第一个面向科学计算的高级语言);Cobol;C;C++ Pascal;Fortran(第一个面向科学计算的高级语言);Cobol;C;C++
其中 P a s c a l , C , C + + Pascal,C,C++ Pascal,C,C++是能书写编译程序的高级程序设计语言
纯面向对象语言: S m a l l t a l k , E I E F E L Smalltalk,EIEFEL Smalltalk,EIEFEL
混合型面向对象语言: C + + , O b j e c t i v e − C , V i s u a l B / C C++,Objective-C,Visual\ B/C C++,Objective−C,Visual B/C
编译方式将高级语言源程序编译成目标程序(能被识别的二进制码)最后变成可执行程序
同一段高级程序不同的编译器会翻译不同的可执行程序
面向对象程序设计具有继承性,封装性,多态性等特点。
面向过程:
P
a
s
c
a
l
,
C
,
F
o
r
t
r
a
n
,
C
o
b
o
l
Pascal,C,Fortran,Cobol
Pascal,C,Fortran,Cobol
面向对象:
C
+
+
,
J
a
v
a
,
O
b
j
e
c
t
i
v
e
−
C
,
E
I
E
F
E
L
C++,Java,Objective-C,EIEFEL
C++,Java,Objective−C,EIEFEL
- 解释:
高级语言源程序通过解释变成可执行程序
B a s i c , P H P Basic,PHP Basic,PHP以解释为主
汇编语言:
汇编源程序通过翻译变成目标程序再变成可执行程序
计算机系统的基本结构
计算机硬件由运算器,控制器,存储器,输入设备,输出设备五部分组成
CPU:(运算单元,逻辑单元,存储单元)
运算器进行算术运算和逻辑运算
控制器是计算器的指挥系统
CPU主要性能指标是主频和字长
CPU能够直接识别并执行机器语言
- 主频:时钟频率,决定着计算机的运算速度,每秒处理的指令条数
- 字长:同时能处理的二进制位数的个数
寄存器是CPU的组成部分
字长4位:4004
字长16位:8086
字长32位:80386
字长64位:Pentium
存储器:
寄存器>Cache>主存(内存)>辅存
RAM:随机存储器(会丢失)
ROM:只读存储器(检查计算机系统的配置并提供最基本的输入/输出(I/O)设备
总线结构:
数据总线:传送数据信息。双向。
地址总线:传送地址信息。单向。宽度决定可以访问的存储器的大小。如20条地址总线可以控制
2
20
B
=
1
M
B
2^{20}B=1MB
220B=1MB存储空间
控制总线:传送控制信号
进制转换:
太麻烦了,不想写了。
原码,反码,补码,阶码
正数的原码,反码,补码相同。符号位为’0’
负数的反码为原码除符号位取反,符号位为’1’
负数的补码为负数的反码加1
0的原码和反码不唯一,但补码唯一
[
+
0
]
原
=
000
…
…
0
,
[
−
0
]
原
=
100
…
…
0
[+0]_原=000……0,[-0]_原=100……0
[+0]原=000……0,[−0]原=100……0
[
+
0
]
反
=
000
…
…
0
[+0]_反=000……0
[+0]反=000……0,
[
−
0
]
反
=
111
…
…
0
[-0]_反=111……0
[−0]反=111……0
[
+
0
]
补
=
[
−
0
]
补
=
000
…
…
0
[+0]_补=[-0]_补=000……0
[+0]补=[−0]补=000……0
阶码:
在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置。
计算机中的数值信息分为整数和实数(浮点数)。实数之所以能够表示很大或者很小的数,是由于使用了阶码
排序:
稳定:插入排序,冒泡排序,二叉树排序,归并排序
不稳定:选择排序,希尔排序,快速排序,堆排序
复杂度分析:
插入排序:最优
O
(
n
)
O(n)
O(n),最坏
O
(
n
2
)
O(n^2)
O(n2)
冒泡排序:
O
(
n
2
)
O(n^2)
O(n2)
快速排序:平均
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn),最坏
O
(
n
2
)
O(n^2)
O(n2)->前提是有序
归并排序:复杂度
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)
用快速排序求第k大值的复杂度为 O ( n ) O(n) O(n)
希尔排序
先确定步长
d
d
d
每隔d个步长选取一个数。
这样就把一组数分成
d
d
d组。
对每一组进行插入排序。
然后重复上述过程
复杂度
O
(
n
(
1.3
—
2
)
)
O(n^{(1.3—2)})
O(n(1.3—2))
后缀名
视频后缀名:
m
p
4
,
w
m
v
,
a
v
i
,
m
o
v
,
m
p
3
,
a
s
f
,
m
p
e
g
mp4,wmv,avi,mov,mp3,asf,mpeg
mp4,wmv,avi,mov,mp3,asf,mpeg
图像后缀名:
g
i
f
,
j
p
g
,
j
p
e
g
,
b
m
p
,
p
n
g
gif,jpg,jpeg,bmp,png
gif,jpg,jpeg,bmp,png
三基色:红,绿,蓝
前后中缀表达式
前缀表达式求值:
后缀表达式从右至左。
中缀表达式转化前、后缀表达式:
找出式子中运算级最小的运算符,即为根。符号左右分成左右子树,重复以上操作,这样我们得到了一棵二叉树。
前缀、后缀的转换只需要把二叉树进行前序(根左右)遍历和后序遍历(左右根)遍历即可。
中缀表达式对应的后缀表达式不唯一。
一棵树对应的后缀表达式唯一。
后缀表达式对应的树不唯一。
有关图
无向图的度数和为偶数。
欧拉回路的条件是全偶0奇
欧拉路的条件是有且只有2个奇点
图一般用邻接矩阵存储
可以用邻接表,邻接矩阵等存储
有关树:
定义:
n
n
n个点,
n
−
1
n-1
n−1条边的联通图
性质1:第k(第一层开始算)层有
2
k
−
1
2^{k-1}
2k−1个节点。深度为k共
2
k
−
1
2^k-1
2k−1个节点
性质2:
n
0
=
n
2
+
1
n_0=n_2+1
n0=n2+1,度数为0的节点数为度数为2的节点数+1
性质3:有n个节点的完全二叉树深度为
⌊
l
o
g
2
n
⌋
+
1
⌊log2n⌋+1
⌊log2n⌋+1
性质4:如果完全二叉树中有
2
∗
n
−
1
2*n-1
2∗n−1个节点则叶节点有n个
树转二叉树:遵循左儿子,右兄弟。
草,断电没保存,不想写了
数学相关
排列:
P
(
n
,
m
)
=
n
!
(
n
−
m
)
!
P(n,m)=\frac{n!}{(n-m)!}
P(n,m)=(n−m)!n!
圆排列:n个人排成一圈:
P
(
n
,
n
)
n
=
(
n
−
1
)
!
\frac{P(n,n)}{n}=(n-1)!
nP(n,n)=(n−1)!
重复排列:
k种不一样的球,每种
a
1
,
a
2
,
…
…
a
k
,
n
=
a
1
+
…
…
+
a
k
a_1,a_2,……a_k,n=a_1+……+a_k
a1,a2,……ak,n=a1+……+ak
方案数=
n
!
a
1
!
∗
a
2
!
∗
…
…
∗
a
k
!
\frac{n!}{a_1!*a_2!*……*a_k!}
a1!∗a2!∗……∗ak!n!
不相邻排列:n种选k个,使两数两两不相邻的方案数为 C n − k + 1 k C_{n-k+1}^k Cn−k+1k
组合
C
n
m
=
n
!
(
n
−
m
)
!
∗
m
!
C_n^m=\frac{n!}{(n-m)!*m!}
Cnm=(n−m)!∗m!n!
性质1:
C
n
m
=
C
n
n
−
m
C_n^m=C_n^{n-m}
Cnm=Cnn−m
性质2:
C
n
m
=
C
n
m
−
1
+
C
n
−
1
m
−
1
C_n^m=C_n^{m-1}+C_{n-1}^{m-1}
Cnm=Cnm−1+Cn−1m−1
重复组合:
n种不一样的球,每种球无限,取
k
k
k个球的方案数为
C
n
+
k
−
1
k
C_{n+k-1}^k
Cn+k−1k
Stirling数:
将n个数分成m部分,每个部分至少有1个数,不同的划分方案为
S
(
n
,
m
)
S(n,m)
S(n,m),有:
S
(
n
,
1
)
=
1
S(n,1)=1
S(n,1)=1,
S
(
n
,
0
)
=
0
S(n,0)=0
S(n,0)=0,
S
(
n
,
n
)
=
1
S(n,n)=1
S(n,n)=1。
S
(
n
,
m
)
=
m
∗
S
(
n
−
1
,
m
)
+
S
(
n
−
1
,
m
−
1
)
S(n,m)=m*S(n-1,m)+S(n-1,m-1)
S(n,m)=m∗S(n−1,m)+S(n−1,m−1)
- Stiring的变式:
n n n 个不同的球,放入 m m m 个不同的盒子,不为空: S n , m × m ! S_{n,m}\times m! Sn,m×m!
n n n 个不同的球,放入 m m m 个相同的盒子,盒子可以为空: ∑ i = 1 m S ( n , i ) \sum_{i=1}^{m} S(n,i) ∑i=1mS(n,i)
n n n 个不同的球,放入 m m m 个不同的盒子,盒子可以为空: ∑ i = 1 m S ( n , i ) × i ! \sum_{i=1}^{m} S(n,i)\times i! ∑i=1mS(n,i)×i!
错位排列:
n本书,放在n个书架上,要求书的编号与书架的编号不一样,有多少放置方案:
d
(
1
)
=
1
d(1)=1
d(1)=1,
d
(
2
)
=
1
d(2)=1
d(2)=1,
d
(
n
)
=
(
n
−
1
)
∗
[
d
(
n
−
1
)
+
d
(
n
−
2
)
]
d(n)=(n-1)*[d(n-1)+d(n-2)]
d(n)=(n−1)∗[d(n−1)+d(n−2)]
0
,
1
,
2
,
9
,
44
,
265
0,1,2,9,44,265
0,1,2,9,44,265
卡特兰数:
C
2
n
n
/
(
n
+
1
)
C_{2n}^n/(n+1)
C2nn/(n+1)
卡特兰数适用的场合:
1、通过连接顶点而将n + 2 边的凸多边形分成三角形的方法个数
2、n个数入栈的出栈序列
3、圆上2n个点,点对相连使得线段不相邻的方案数
4、n个括号匹配组成的合法括号匹配对的数量
5、n个点构成多少种不同的二叉树
等差数列: a 1 , a 1 + k … … a 1 + ( n − 1 ) ∗ k a_1,a_1+k……a_1+(n-1)*k a1,a1+k……a1+(n−1)∗k
首项是
a
1
a_1
a1,末项
a
n
a_n
an,公差是
k
k
k,项数是
n
n
n,和是
s
u
m
sum
sum:
a
n
a_n
an:
a
1
+
(
n
−
1
)
∗
k
a_1+(n-1)*k
a1+(n−1)∗k,首项+(项数-1)*公差
n
n
n:
(
a
n
−
a
1
)
/
k
+
1
(a_n-a_1)/k+1
(an−a1)/k+1,(末项-首项)/公差+1
s
u
m
sum
sum:
(
a
n
+
a
1
)
∗
n
/
2
,
(a_n+a_1)*n/2,
(an+a1)∗n/2,,(首项+末项)*项数/2
等比数列: a 1 , a 1 ∗ k … … , a 1 ∗ k n − 1 a_1,a_1*k……,a_1*k^{n-1} a1,a1∗k……,a1∗kn−1
求和: a 1 ∗ ( k n − 1 ) k − 1 \frac{a_1*(k^n-1)}{k-1} k−1a1∗(kn−1)
P,NP,NPC,NPH
草,写完了之后断电没保存。。不想在写了。
这篇博客挺好
主定理
草,写完之后没保存。。不想再写了。
计算机病毒
人为制造的非法程序,是病毒程序
特性:隐蔽性,潜伏性,传播性,激发性,破坏性,危害性
算法
算法是解决问题的操作步骤
具有有穷性,确定性,输入,输出,可行性五个特征
注意:不具有正确性
计算公式:蔡勒公式
Linux 删除文件命令
一些小语法
如果在
s
w
i
c
h
swich
swich中运行
c
o
n
t
i
n
u
e
continue
continue,那么他会重新到swich的开头在做一遍。
i
+
=
a
−
−
i+=a--
i+=a−−,先运行
i
+
=
a
i+=a
i+=a在运行
a
−
−
a--
a−−
大数据5V特点
V
o
l
u
m
e
(
大
量
的
)
Volume(大量的)
Volume(大量的)
V
a
r
i
e
t
y
(
多
样
的
)
Variety(多样的)
Variety(多样的)
V
a
l
u
e
(
价
值
密
度
低
)
Value(价值密度低)
Value(价值密度低)
V
e
l
o
c
i
t
y
(
增
长
速
度
快
)
Velocity(增长速度快)
Velocity(增长速度快)
V
e
r
a
c
i
t
y
(
准
确
性
)
Veracity(准确性)
Veracity(准确性)
数论相关
eratosthenes筛法
复杂度 O ( n l o g l o g n ) O(nloglogn) O(nloglogn)
线性筛法
复杂度
O
(
n
)
O(n)
O(n)
其中中间有一个
i
%
p
r
[
j
]
=
=
0
i\%pr[j]==0
i%pr[j]==0的时间优化。但是去掉并不影响正确性
费马小定理
若 p p p是质数,则对于任意整数 a a a,有 a p ≡ a ( m o d p ) a^p≡a(mod\ p) ap≡a(mod p)
欧拉定理
若 a , p a,p a,p互质,则 a φ ( n ) ≡ 1 ( m o d n ) a^{φ(n)}≡1(mod\ n) aφ(n)≡1(mod n)
欧拉定理推论
若正整数 a , n a,n a,n互质,则对于任意正整数 b b b,有 a b ≡ a b m o d φ ( n ) ( m o d n ) a^b≡a^{b\ mod\ φ(n)}(mod\ n) ab≡ab mod φ(n)(mod n)
扩展欧几里得
用来求解形如 a x + b y ≡ g c d ( a , b ) ax+by≡gcd(a,b) ax+by≡gcd(a,b)的整数解
int exgcd(int a,int b,int &x,int &y){
if (b == 0) {x = 1 , y = 0;return a;}
int d = exgcd(b,a%b,x,y);
int z = x;
x = y; y = z-y*(a/b);
return d;
}
矩阵乘法
矩阵
a
∗
b
=
c
a*b=c
a∗b=c
其中
c
[
i
]
[
j
]
有
a
矩
阵
的
第
i
行
和
b
矩
阵
的
第
j
列
相
乘
得
来
c[i][j]有a矩阵的第i行和b矩阵的第j列相乘得来
c[i][j]有a矩阵的第i行和b矩阵的第j列相乘得来