• 初赛复习


    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;
    }
    
  • 相关阅读:
    Java修饰符大汇总
    死锁
    线程的几种可用状态
    重载与覆盖(重写)
    Git
    JS跨域
    Spring中的Bean
    ZooKeeper
    Mysql(2)
    Maven
  • 原文地址:https://www.cnblogs.com/hanser/p/7653164.html
Copyright © 2020-2023  润新知