初赛知识点整理(选择题)& 听课笔记
一、计算机基础
-
第一台计算机 埃尼阿克 1946
-
第一个程序员 Ada(女)
-
菲尔兹奖(数学)
-
IEEE:美国电气与电子工程师协会
-
图灵奖 华人只有姚期智 艾伦·麦席森·图灵(英)ACM设立
-
冯诺依曼结构:
-
计算机组成:
- 主频:处理速度
- 内存:临时存放的东西(RAM)
- 外存
- 摩尔定律:硬盘每18个月翻倍
-
软件:
- 操作系统:Windows、DOS、Unix、Linux、MacOS、Android、ios、鸿蒙
- 应用软件
- 机器语言(CPU看得懂的指令)、汇编语言、高级语言(c++)
-
文字编码:GBK编码(2字节)(比较老的)、utf-8(3字节)(比较新)
-
图片:黑白(01)、24位彩色(RGB)
-
文件系统扩展名(不常见的):
- 图片:tiff,jpeg
- 文档:PDF(不可编辑)
- 视频:avi,rm,WMV,MPEG
-
关于比赛:
- NOI:1984开始
- NOIP:1995开始
- 2022年后只能用c++
-
程序设计:
- 编译:代码->可执行文件(机器码) C/C++,Pascal:编译型语言 编译器:将一种语言(通常是高级语言)翻译成另一种语言(通常是低级语言)
- 解释:一行一行运行,又被称为“脚本“,后面错了仍可以进行前面的部分。 Python,JavaScript,PHP,BASIC:解释型语言
-
存储:KiB、MiB、GiB-->1024,KB、MB、GB-->1000。
二、基础算法
- 排序
- 计数排序(人们口中的“桶排序”):$O(n+maxx) $不基于比较,稳定
- 基数排序:从个位开始进行计数排序。(O(kn)) 稳定
- 选择排序:选最小的与第一张交换,再选次小的。(O(n^2)) 不稳定
- 冒泡排序:左右比较不断交换,最大的先到最右边,然后次大的到次右边。$O(n^2) $稳定
- 插入排序:跟打扑克一样。$O(n^2) $ 稳定
- 希尔排序:插入排序的优化版,(O(n) o O(nlog^2n)),不稳定
- O(nlogn)排序:归并(稳定),快速排序堆排序(不稳定),快排最慢 (O(n^2))(当原数组有序时)
- 卡特兰数:n个数出栈方案数
三、排列组合问题
-
捆绑法:例如x个元素必须靠在一起。则把这x个元素单独拿出来,方案数为 ((n-x)! imes x!)。
-
插板法:例如10个人分到7个班,每班至少一人,则10个人9个空插6个板,方案数为(C_9^6)。
注意:插板法只能解决人相同班级不同的类型的问题,不能解决都相同或都不同的问题!
-
分类法:例如csp2019提高t7,分类讨论结合排列组合。
-
可以考虑画图表进行手动dp。
-
卡特兰数:
-
含义为n*n的方格中从左下角走到右上角的方案数(要求向上或向右走,且每时每刻向右走的次数大于等于向上的次数)
-
(Ans=C_{2n}^n-C_{2n}^{n-1}(nin Z))
-
推导:容斥原理。
-
-
错排问题:
- 公式:(Ans=n!-frac{n!}{2!}+frac{n!}{3!}-……+(-1)^{n+1}frac{n!}{n!})
- 考虑容斥。
-
看着选项数字都很小直接枚举即可。
四、其他数学问题
-
负数补码=原码-1 再取反。若忘记了可以通过a+(-a)=0推出。
-
生动形象的补码图
-
主定理:
-
(Theta) 是平均时间复杂度(准确),(Omicron) 是最坏情况下的复杂度(上界),(Omega) 是最好情况下的复杂度(下界)。
-
(T(n)=aT(frac{n}{b})+f(n))
-
第一步:算出 (log_{b}a) ,与 (f(n)) 中n的幂次作比较
-
第二步:
- 若 (log_{b}a > f(n))的幂次,则 (T(n)=Theta(n^{log_{b}a}))
- 若 (log_{b}a = f(n))的幂次,则 (T(n)=Theta(n^{log_{b}a}log n))
- 若 (log_{b}a < f(n))的幂次,则 (T(n)=Theta(f(n)))
-
好用!
-
-
pascal公式:(C_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}) 理解:第n个数选或者不选两种情况。