我们仍未知道那天所看见的算法的名字

Published on March 01, 2018

4 min READ


原曲:未闻花名

填词:建岳小法师

信息学 包含头文件 运算有优先

如果不想声明就要把函数写前面

有时为了程序更简洁 把条件结果缩成一行写

ASCII码 转义斜杠

二进制在机器内部简单方便

计算转换成位运算快如闪电

按位与或非异或还有左右移小数点

各种进制眼花缭乱扰你视线

模拟短除法顺便用栈来堆叠

还有原反补码巧妙让正负零消失不见

~ 看字符串难度大

定类型char 和 string

输入输出要合理

~ 时空复杂度注意

看规模与约定

局部与全局 差些数量级

用于地图和树的定义

把大数据宏定义后更利于写题(方便修订)

用数组实现简单模拟

循环枚举暴力

输入数据太大要考虑使用高精

明确递推和递归关系

别忘记边界条件的定义

能否走通让深度优先

最少步数广度优先

先搜小可能性注意各种剪枝条件

数论要耐心找规律

记住几个简单数学模型

卡特兰数 斐波那契

~ 不忘字符串哈希

选进制131

再对大数取余

~ 记清匹配KMP 最小循环位移

结构前向星 矩阵快速幂

插入排序要比快排稳定

二分归并 顺便实现逆序统计(康拓必需)

动态规划要明确状态转移还要满足最优化原理和没有后效性

贪心简单却不是长久之计

要给出严格的数学证明

公式推理 也不容易

RMQ-ST

IDA*

拥有估价特性

迭代加深难题

深度优先遍历

层数要超出预期 就跳出循环体

若将答案暂定 添加数组 存在内存里(还原整体)

最短路三重循环暴力

Dijkstra标记

负边权用SPFA遇负环就标记

分治二分解决后合并

二分答案要证明单调性

01背包主要关注选与不选的问题

从最大的体积放更多的物品

LIS最长上升子序列

包含着前项和长度信息

最小生成树异集轻边 拥有最小边权

Kruskal 使用并查集实现

红黑树伸展树替罪羊树

便于查找插入和删除

二分图充要环长非奇

最大匹配匈牙利

等于最小覆盖和补最大独立集

网络流解决统筹规划

增广路和压入与重标记

算法原理 理解清晰

NOIP 永无止境

Table of Contents