Skip to content
0

重要知识点

卡特兰数

以下是一些卡特兰数 Cn 的应用:

  • 二叉树计数

    • n 个结点的不同形态的二叉树的数量是卡特兰数 Cn
  • 括号匹配

    • n 对括号的有效组合数。
  • 栈操作序列(出栈顺序)

    • n 个元素的出栈顺序数。
  • 凸多边形的三角划分

    • n+2 条边的凸多边形划分成三角形的方法数。
  • Dyck路径(格路问题)

    • (0,0)(2n,0),每次向右上或右下移动一步,且不越过 x 轴的路径数。
  • 满二叉树计数

    • n+1 个叶子的满二叉树的数量。
  • 表达式加括号

    • n+1 个因子的乘法表达式加括号的方式数,例如:4 个因子 a,b,c,d5 种加括号方式:(a(b(cd))),(a((bc)d)),((ab)(cd)),((a(bc))d),(((ab)c)d)
  • 棋盘不相交对角线

    • n×n棋盘上放置不相交的对角线(从左上到右下)的方法数。
  • 凸多边形划分

    • n+2 边形的顶点配对成不相交的弦的方式数。

主定理

主定理(Master Theorem)是用于求解分治算法递归式时间复杂度的一个强大工具。它适用于形式如下的递归关系:

T(n)=a×T(nb)+f(n)

其中:

  • a1(子问题的数量);

  • b>1(问题规模缩小的倍数);

  • f(n) 是递归之外的计算成本(分割和合并的成本)。

主定理通过比较 f(n)nlogba 的大小关系,将递归式的解分为三种情况:

  • f(n)<nlogba,则 T(n)=Θ(nlogba)

  • f(n)=nlogba,则 T(n)=Θ(nlogbalogn)

  • f(n)>nlogba,则 T(n)=Θ(f(n))

这只是简化过的情况,可以自行去了解更加详细的主定理。


存储单位

bit(比特,即一位二进制)

Byte(字节,即一个英文字符)

1Byte=8bit

KBMBGBTBPB


Windows 与 Linux 的一些操作命令

操作描述Windows 命令Linux / Unix 命令
列出目录内容dirls
改变当前目录cd <目录路径>cd <目录路径>
返回上一级目录cd ..cd ..
显示当前目录路径cdpwd
创建新目录mkdir <目录名>mkdir <目录名>
删除空目录rmdir <目录名>rmdir <目录名>
删除文件delrm
复制文件copycp
移动/重命名文件movemv
查看文件内容typecat
分页查看文件内容moreless
查找文件dir /s <文件名>find / -name <文件名>
查找文本findstr "文本" <文件>grep "文本" <文件>

排序

排序算法平均时间复杂度最好情况最坏情况空间复杂度是否稳定
冒泡排序O(n2)O(n)O(n2)O(1)稳定
插入排序O(n2)O(n)O(n2)O(1)稳定
选择排序O(n2)O(n2)O(n2)O(1)不稳定
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)稳定
快速排序O(nlogn)O(nlogn)O(n2)O(logn)不稳定
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定
计数排序O(n+k)O(n+k)O(n+k)O(n+k)稳定
基数排序O(n×k)O(n×k)O(n×k)O(n+k)稳定
希尔排序O(n1.3)O(n)O(nlogn)O(n2)O(1)不稳定
TimSortO(nlogn)O(n)O(nlogn)O(n)稳定
  • 基于关键字比较的算法:冒泡排序,选择排序,插入排序,快速排序,归并排序,堆排序。

09/16

  • 层次遍历是按层从小到大,每一层从左到右的顺序遍历。

  • 5 个没有区别的结点构成不同形态的二叉树的种类的个数。

    • 因为卡特兰数 Cn=1n+1(2nn) 能表示具有 n 个结点的不同二叉树的形态数,所以答案为 C5=16(105)=42
    • 由于我比较蒟蒻,我的方法是令 fi,j,k 表示 i 个点,j 层数,最后一层有 k 个点的方案数,然后慢慢转移。其实 5 个点还是能接受的。
  • 线性表若采用链表存储结构,内存中可用存储单元的地址可以是不连续的(即不一定要求地址连续)。

    • 链表不需要连续的内存空间,而是利用分散的内存块通过指针串联起来。这与数组(顺序存储结构)形成对比,数组要求连续的内存空间。
  • 在 Linux 系统中,比较两个文件有无不同之处的命令是 diff

    • 在 Windows 系统中应该是 fc
  • 断电之后仍能保存数据的(非易失性存储器)有 硬盘、固态硬盘、U盘/闪存驱动器、光盘、ROM(只读存储器) 等;易失性存储器有 RAM (可读写储存器)、Cache (高速缓存)、显存 (VRAM) 等。

  • 田忌赛马问题

    • 站在田忌角度思考问题,考虑贪心,对两人的马的能力值进行排序,先比较两人最好的马,若不能赢,则比较两人最差的马,若还不能赢,就用田忌最差的马去换齐王最好的马,尽量平局。
    • 证明:其实就是能赢就赢嘛,如果想用田忌较弱的赢齐王较强的,再用田忌较强的赢齐王较弱的,那么这样的对局也可以变成用田忌较强的赢齐王较强的,再用田忌较弱的赢齐王较弱的,后者的方法不劣。

09/17

  • 有红、黄、蓝、绿四种颜色的小旗,分别有 2,2,3,3 面,任意取出三面按顺序排成一行,表示一种信号,那么这些旗子总共可以表示不同的信号的种数。

    • 考虑分类计数: 1.三个颜色都不同时,有 A43=24 种; 2.两个颜色相同,一个不同时,有 4×3×(31)=36 种,其中重复的颜色有 4 种选择,剩下 3 种颜色中选出一个单独放进去,位置有 (31) 种选择; 3.三个颜色都相同时,只能放蓝和绿色的小旗,故有 2 种。
    • 综上所述,这些旗子总共可以表示不同的信号种数为 24+36+2=62 种。
  • T(n) 表示某个算法输入规模为 n 时的运算次数。如果 T(1) 为常数,且有递归式 T(n)=2×T(n2)+n3,求 T(n)

    • 有两种做法:递归树法和主定理法。这里将主定理法: a=2,b=2,f(n)=n3nlogba=nlog22=n1=nf(n)=n3=Θ(n); 所以属于第二种情况 f(n)=nlogba 时,T(n)=Θ(nlogn)
  • 某学校来了一位新老师,三个同学猜测新老师教什么科目,小美说:“不是教语文,也不是教数学”;小元说:“不是教数学,一定是教英语”;小天说:“不是教英语,一定是教数学”。他们三人中有一人全猜对了,一人全猜错了,还有一人只猜对了一半。问:新老师究竟教什么科目?

    • 分别假设新老师为语文,数学,英语老师,接着判断三人的正确性,结合提示,得出最后的结果即可。
  • 方程 a×b=(ab)×(ab),在 a,b 都取 [0,15] 中的整数时,存在解的组数。

    • 成立的前提是 a 的二进制位是 b 的子集,或 b 的二进制位是 a 的子集(即一个数包含另一个数的所有位置)。
    • 那么答案就是 2×3416=146,其中: 枚举 a 的子集 bk=04(4k)2k,利用二项式定理,得为 (1+2)4=81a,由于对称 abba 的情况,乘以 2;最后减去 a=b 时重复计算的 16 次。

09/18

零碎的做了一些题,虽然依旧被薄纱(特别是 2024-S 最后一题),但是没什么特别必要记录的题。

做前面的选择题还要考虑暴力模拟 dp 吗???

  • 关于 memset

memset(a,x,sizeof a)x 可能为 0x00,0xff,0x1f,0x3f,0x7f,0x80,0xcf,0xef 等。

0x3f 举例,在 int 下就是 (3F3F3F3F)16,在 long long 下就是 (3F3F3F3F3F3F3F3F)16

初始化值int 数组效果 (32位)long long 数组效果 (64位)有符号 int 值有符号 long long 值常见语义
0x000x000000000x000000000000000000
0xFF0xFFFFFFFF0xFFFFFFFFFFFFFFFF11负一
0x3F0x3F3F3F3F0x3F3F3F3F3F3F3F3F1,061,109,5674,557,014,598,15,606,335安全正无穷
0x7F0x7F7F7F7F0x7F7F7F7F7F7F7F7F2,139,062,1439,223,372,036,854,775,807较大正数
0x800x808080800x80808080808080802,139,062,1449,223,372,036,854,775,808负无穷
0xCF0xCFCFCFCF0xCFCFCFCFCFCFCFCF808,464,4333,619,344,231,715,046,737大负数
0xEF0xEFEFEFEF0xEFEFEFEFEFEFEFEF272,716,3221,172,812,30,314,442,385较大负数

注意事项:

  • "正无穷" → 选择 0x3F

  • "负无穷" → 选择 0x80

  • "-1" → 选择 0xFF

  • 避免使用 0x7F:有溢出风险(2×0x3F<0x7F

  • 谨慎使用 0xCF0xEF

  • 特殊的时候可能运用到其他的类似于 0x1f


09/19

初赛前最后一晚,复习些啥好呢???

  • 阅读程序小技巧:

    • 对于二进制函数 (x,y),可以先化简再分别代入 x=0/1,y=0/1 列表找规律。
    • 是不进位加, 是不退位减。
  • 关于二进制之间的转化:

    • x+y=xy+xy
    • xy=(x¬y)(¬xy)
    • (xy)((xy)(¬xy)(2024-S 中出现,可以通过找规律得到)
最近更新