初赛复习

https://wenku.baidu.com/view/b4edbd28e2bd960590c67702.html

http://url.cn/5jiO6Oh

复赛前还要多写几次树状数组,不熟练。

[错题集]
关于小数的进制转换 :10变n,乘n取整;n变10,小数部分从左往右第x位就a[x](n^x)最后加上整数部分和小数点。
二分查找 的前提是有序和顺序结构存储
后缀表达式 :操作数在运算符前不加括号
图的性质 :n(n>=3)个点的连通图,最多边数n×(n-1)/2
**通过计算时间的递推式算时间复杂度 **
主定理 (其实算是主定理的一个推论?原主定理比较难记...)T(n) = a
T(n/b) + c(n^d)
- 若a<(bd),则O(nd)
- 若a=(bd),则O(nd
logn)
- 若a>(bd),则O(n(log_b_a))[a关于b的对数,这个Markdown有问题...]
计数排序 :以空间换时间,(时间上)比其他比较排序优秀
看程序写结果有坑 :不要想当然,该写完的要写完。

[硬件]
电子管-晶体管-集成电路-大规模集成电路
ENIAC

冯·诺依曼理论(EDVAC):
1 存储器 运算其 控制器 输入设备 输出设备
2 存储程序思想

微型机主要技术指标:
字长 BIT (CPU主要性能指标) = 寄存器位数
主频 决定速度(CPU) PII300 300指的是主时钟频率
内存容量 单位BYTE 8BIT = 1 BYTE 1024B = 1KB 1024KB = 1MB
外村容量 软盘 硬盘 光盘
寄存器 的存取速度最快

计算机特点(略) 应用:数值计算、信息管理、过程控制、辅助工程

中央处理器(CPU):
运算器 算数运算、逻辑运算
控制器 指挥系统
寄存器
能访问的最大存储容量取决于 地址总线
存储容量:B为单位; 1B = 8bits; 1KB = 1024B; 1MB = 1024KB; 1GB = 1024MB.

存储器:
- 自己乱总结的:寄存器>快存>主存>辅存
- 存储器的存储速度:内存>硬盘>光盘
- 其他部件速度:CPU>高速缓存>内存>硬盘>U盘>光盘>软盘
内部存储器 CPU能直接访问,包括快速缓冲存储器(cache)和主存储器
主存储器 (内存中没有快速缓冲存储器) 按读写功能分 只读存储器(ROM)和随机存储器(RAM)两种
外部存储器:1 外存储器=辅助存储器 2 硬盘 3 软盘(3.5英寸/1.44MB) 4 光盘存储器 (CD-ROM) 56MB 5 闪存
输入设备 键盘 鼠标 手写笔 触摸屏 麦克风 扫描仪
输出设备 显示器(CRT LCT) 打印机(针式、喷墨、激光[静电吸附墨粉转移纸张]) 绘图仪 音箱

主机由CPU和内存储器组成
计算机系统总线上传送的信号有 数据信号 控制信号 地址信号

[进制与编码]
转换:二进制 十进制 八进制 十六进制
原码 - 符号位(+0 -1)+数值
反码 - +;原码=反码; -:1+全部取反
补码 - n位字长 二进制下M = 2^n. >=0时原码=补码;<0时 补码=反码+1

ASCII码 '0'-48 'A'-65 'a'-97

汉字信息编码
输入
交换:一级汉字按拼音;二级汉字按部首
存储(字模)

软件与操作系统
系统软件 支持应用软件,操作系统软件:DOS Windows Linux Unix
应用软件

操作系统(OS)
各种文件后缀名
bat、com、exe、sys、tmp、zip
doc、xls、txt、htm
bmp、gif、jpg、psd
wav、avi、mp3、swf

[网络]
TCP/IP 网络协议
链路层-网络层(IP)-传输层(TCP)-应用层(FTP、TALENT、…)

[五种经典递推关系]
Fibonacci数列:F(x) = F(x-1) + F(x-2)
Hanoi塔问题:H(n) = 2*H(n-1) + 1
平面分割问题:A(n) = A(n-1) + 2*(n-1)
Catalan数:ans = C(2n, n)/(n+1);
C(n) = C(1)C(n-1) + C(2)C(n-2) + ... +C(n-1)C(1),n>=2
C(n) = (2n)!/[(n+1)!n!]
第二类Striling数:

定义:n个有区别的球放到m个相同的盒子中,要求无一空盒,其不同的方案数用S2(n,m)表示,称为第二类Stirling数。

下面就让我们根据定义来推导带两个参数的递推关系——第二类Stirling数。
解:设有n个不同的球,分别用b1,b2,……bn表示。从中取出一个球bn,bn的放法有以下两种:
1、bn独自占一个盒子;那么剩下的球只能放在m-1个盒子中,方案数为S2(n-1,m-1);
2、bn与别的球共占一个盒子;那么可以事先将b1,b2,……bn-1这n-1个球放入m个盒子中,然后再将球bn可以放入其中一个盒子中,方案数为mS2(n-1,m)。
综合以上两种情况,可以得出第二类Stirling数定理:
S2(n,m)=mS2(n-1,m)+S2(n-1,m-1) (n>1,m1)
边界条件可以由定义2推导出:
S2(n,0)=0;S2(n,1)=1;S2(n,n)=1;S2(n,k)=0(k>n)。

Catalan数在组合计算中的应用

1、矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,有几种括号化的方案?

2、一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?

3、n个节点构成的二叉树,共有多少种情形?

4、求一个凸多边形区域划分成三角形区域的方法数?

5、在圆上选择2n个点,将这些点成对链接起来使得所得到的n条线段不相交,一共有多少种方法?(下图供参考)

6、n*n的方格地图中,从一个角到另外一个角,不跨越对角线的路径数为h(n).例如, 4×4方格地图中的路径有:

7、n层的阶梯切割为n个矩形的切法数也是。如下图所示:

8、有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?

9、甲乙两人比赛乒乓球,最后结果为20∶20,问比赛过程中甲始终领先乙的计分情形的种数。

10、2n个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

[数论]
最大公约数
1 分解质因子
2 欧几里得算法
3 二进制法

最小公倍数
lcm = a*b/gcd

扩展欧几里得 - 裴蜀定理 - 对任何整数a,b,关于未知数x,y的裴蜀等式ax + by = c,方程有整数解当且仅当c是gcd(a, b)的倍数。裴蜀等式有解时必然有无穷多个解。

void Extended_Euclid(int a, int b, int &d, int &x, int &y){
	if(b == 0){
		d = a;
		x = c/a;
		y = 0;
	}
	else{
		int x1, y1;
		Extended_Euclid(b, a%b, d, x1, y1);
		x = y1;
		y = x1 - a/b*y1;
	}
}

欧拉函数 - 对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。可在分解质因子的过程完成。

int euler(int n){
    int ans = n;
    for(int i = 2; i*i <= n; i++){
        if(n % i == 0){
            ans = ans/i*(i-1);
            while(n%i == 0) n/= i;
        }
    }
    if(n>1) ans = ans/n*(n-1);
    return ans;
}

素数
1 朴素做法 (判定)

bool isprime(int n){
	if(n == 1) return false;
	else{
		for(int i = 2; i*i <= n; i++) 
			if(n % i == 0) return false;
		return true; 
	}
} 

2 埃式筛法 (找出1~n素数)

void sieve(int n){
	memset(pr, true, sizeof(pr));
	for(int i = 2; i*i <= n; i++){
		if(pr[i]){
			for(int j = i*i; j <= n; j += i)
				if(pr[j]) pr[j] = false;
		}
	}
}

3 线性筛法

void Euler_sieve(int n){
	memset(pr, true, sizeof(pr));
	ans[0] = 0;
	for(int i = 2; i <= n; i++){
		if(pr[i]) ans[++ans[0]] = i;//把素数保存到素数表ans中 
		for(int j = 1; j <= ans[0] && i*ans[j] <= n; j++){
			pr[i*ans[j]] = false;
			if(i % ans[j] == 0) break;
		}
	}
}

费马小定理 - 假如a是一个整数,p是一个素数,gcd(a, p) = 1,那么有:$$a^{p-1} ≡ 1(mod p)$$
应用:p是素数,a、p互质,则 \(a^b mod p = a^{b mod p} mod p\)
注意:不代表\(a^x ≡ 1(mod p)\) 中x的最小正整数值是p-1.

欧拉定理 - 若n,a为正整数,且n、a互质,则\(a^{φ(n)} ≡ 1(mod n)\)
应用:n>1,a、n互质, \(a^b mod n = a^{b mod φ(n)} mod n\)

威尔逊定理 - 当且仅当p为素数时:\((p-1)! ≡ 1(mod p)\)

逆元 - 对任意n>1,如果gcd(a, n)=1,则方程ax≡b(mod n)对模n的解可能无解也可能不唯一!
把ax≡b(mod n) 改写成 ax + ny = b的形式,方程要有解必须满足p|b.
当不满足p|b时,利用扩展欧几里得extended_Euclid求出ax + ny = b的一个特解(x0, y0),方程的一般解为(x0+k(n/p), y0-k(a/p)),x对模n的解是唯一的。

中国剩余定理 - 如计算被9,8,7除时,余数分别为1、2、3的所有整数x。

int remainder(){
	for(int i = 1; i <= n; i++){
		int x, y;
		Extended_Euclid(mul/a[i], a[i], x, y);//x为mul/a[i]关于模a[i]的逆元
		ans = (ans + mul/a[i]*x*r[i]%mul)%mul; 
	}
	ans = (ans + mul) % mul;
	return ans; 
}

线性同余方程

//返回最小正整数解
int solve(){
	coe = 1; con = 0;
	for(int i =1; i <= n; i++){
		scanf("%d%d%d", &a[i], &b[i], &c[i]);
		int d, x, y;
		//用扩展欧几里得解方程a[i]*(coe*x+con)+b[i]*y = c[i]
		Extended_Euclid(a[i]*coe, b[i], c[i]-a[i]*con, d, x, y);
		con += coe*x;
		coe *= b[i]/d; 
	}
	return (con % coe+coe) % coe;
}
原文地址:https://www.cnblogs.com/hanser/p/7653164.html