OI知识点总结

来源:互联网 发布:酷盛网络加速器 编辑:程序博客网 时间:2024/06/13 23:15

Part0编程基础

1. C++或pascal

—结构化编程

—面向对象的内容(STL)

2. 怎样解题?

3. 怎样调试?

 

Part1求解策略

1. 动态规划(DP)

—维护类型

=布尔型

=数值型

—题型

=按位DP

=区间DP(环形DP)

=状压DP(连通性DP)

=树形DP(记忆化搜索)

—优化

=空间 滚动数组

=时间

+降维

+优化转移

*预处理

*提前计算

*数据结构 or 算法维护

*单调性

#斜率优化

#四边形不等式

+常数优化

*位运算

*底层优化

2. 搜索

—实现

=循环

=BFS

+双向

+判重

*HASH

*分段HASH

*数据结构

=DFS

=A*算法

—优化 剪枝

—策略 骗分的第一选择

3. 随机算法

—遗传算法

—模拟退火算法

—粒子群算法

—随机贪心

4. 二分

—检索 查找第k大值

—参数搜索

=最小化最大值

=最小化平均值

=最小化第k大值

=其他:满足单调性的二分检验

5. 三分

6. 贪心

—策略:骗分的第二选择

7. 分治

8. 排序

—方法

=冒泡排序

=归并排序

=快速排序

=堆排序

—作用

=构造单调性à产生某些性质

=定序à缩小枚举范围

—策略 乱序的集合几乎都要定序

9. 离散化

—策略 相对关系的题目,可使用离散化优化空间

10.模拟

—高精度运算

=题型

+高精度加法

+高精度减法

+高精度乘法

+高精度除法

=优化

+每位存更多

+FFT

—日期计算

—多项式的表示

11.分块

12.压位

 

Part2字符串

1.KMP算法

—字符串匹配

—最小循环字串

2.EXTENDED-KMP

—字符串匹配

—其他

3.最小表示法

4.Trie树

—检索

—排序

—优化DP

—最长公共前缀

4. AC自动机

—字符串匹配

—优化DP

5. Trie图

6. 后缀数组

—后缀排序

+倍增算法

+DC3算法

—单个子串问题

+最长公共前缀

+重复子串

=可重叠最长重复子串

=不可重叠最长重复子串

=可重叠的k次最长重复子串

+子串的个数

+回文子串

+连续重复子串

=连续重复子串

=重复次数最多的连续重复子串

—两个字符串的问题

+公共子串

+子串的个数

—多个字符串的相关问题

+不小于k个字符串中的最长子串

+每个字符串至少出现两次且不重叠的最长子串

+出现或反转后出现在每个字符串中的最长子串

7. 后缀树

8. 后缀自动机

9. Hash

 

Part3图论

 

Part4高级数据结构

1.线段树

—实现 +堆 +链表 +数组

—策略 Lazy Tag

—作用 区间问题 +统计 +DP

—类型

+一颗线段树

+n颗线段树(n为小常数)

+二维线段树

……

2.树状数组

3.动态树

4.平衡树

—类型 +Splay +Treap +SBT +AVL

—题型

5.优先队列

—堆

—可并堆

—左偏树

6.并查集

7.ST表

8.跳表

9.块状链表

10.单调队列

11.单调栈

12.HASH表

13.可持久化数据结构

 

Part5数学

1.数论

2.组合数学

3.博弈论

4.线性代数

5.其他

—傅立叶变换

+DFT

+FFT

 

Part6计算几何

0 0