省赛:必考和常考知识点,它们也是整个算法竟赛知识库的基础。
- 思维题,不需要算法和数据结构,只需要逻辑推理的题目,难度可难可易。考察思维能力和编码能力,只能通过大量做题来提高,
- BFS搜索和DFS搜索,也就是暴力搜索。是非常基本的算法,是基础中的基础。
- 动态规划。线性DP,以及一些DP应用:背包、LIS、LCS。
- 简单数学数论:模、幂、素数、因式分解、大数分解定理、GCD、LCM等。
- 简单图论:最短路(单源,多源,有无负权值)、最小生成树。
- 简单字符串处理、输入输出。Menachar,hash,kmp
- 基本算法:排序、排列、二分、倍增、差分与前缀和、贪心。
- 基本数据结构:队列、栈、链表、树等。
国赛:增加了很多高级数据结构和高级算法。例如线段树、博弈论、图论等、状压DP树形DP、积性函数。
知识点 | 题目 |
---|---|
杂题 | 2017油漆面积,2018付账问题、2019最大降雨量、2019外卖店优先级、2020蛇形填数、2020成绩分析、2020回文日期、2022裁纸刀 |
基本数据结构 | 二叉树(2019完全二叉树的值) |
基础算法 | 枚举(2018打印图形、2021卡片)、差分(2018三体攻击)、倍增二分法(2017分巧5克力、2022青蛙过河)、前缴和(2022求和) |
搜索 | DFS(2017迷宫、2017方格分割、2017正则问题)、BFS(2017跳蚱、2018全球变暖、2019迷宫) |
高级数据结构 | 并查集(2019修改数组、2020七段码、2022推导部分和)、线段树(2022选数异或、2022最长不下降子序列、2022扫描游戏 |
动态规划 | 线性DP(2017字母组串,2017最大公共子串、2017包子凑数、2020字串排序、2021砝码称重、2021括号序列、2022选数异或 |
状态压缩DP(2019糖果、2021回路计数)、树形DP(2021左孩子右兄弟)、单调优化(2021分果果) | |
数学 | 简单数学:2018分数,2018星期一,2018乘积尾零、2018第几个幸运数、2019平方和、2019数列求值、2020门牌制作、2022平面分割 |
数论:余数(2018倍数问题),GCD(2017包子凑数,2020既约分数)、质因数分解(2021货物摆放)、素数(2022数的拆数论:余数(2018倍数问题)、分)、逆元(2022爬树的甲壳虫) | |
组合数学:burside引理(2017魔方状态)、卢卡斯定理(2019组合数问题)、博弈论(2021异或数列、2022灭鼠先锋 | |
其他:快速幕(2019RSA解密) | |
几何:叉积、面积(2020荒岛探测)、2021直线、2022扫描游戏 | |
字符串 | 简单字符串处理(2018航班时间、2020子串分值) |
图论 | 最短路BFS(2019迷宫)、最短路Floyd(2021路径) |
最近5年考点总结
- 递归
- 递归+思维
- 递归求全排列
- 递推
- 动态规划
- 动态规划01背包问题
- 二叉树
- 二分查找
- 分治思想
- 黄金分割与斐波那契
- 计算机组成原理基本单位转换
- 记忆型递归
- 简单计算
- 简单枚举
- 进制转换
- 经典dp
- 矩阵运算
- 快速排序
- 枚举
- 枚举+DFS排列组合
- 枚举+set去重+数学公式推导
- 枚举+技巧
- 枚举+判断
- 枚举+判断,数学推理减少未知数
- 枚举+优化(hashmap存储)
- 枚举+最大公约数
- 枚举加字符串查找
- 排序+set去重+map映射
- 排序+遍历
- 排序+二分
- 排序+奇偶性判断
- 前缀和+组合数学
- 全排列
- 全排列
- 全排列+dfs求矩阵中的连通块
- 全排列与字符串切割;
- 日期运算,细心,考虑闰年;字符串处理
- 时间与日期
- 树状数组
- 数学,等比数列,预处理
- 数学+分类讨论
- 数学+思维
- 数学+找规律n
- 数学+最大公约数
- 数学思维+二分枚举
- 数学思维+栈
- 数学推理
- 数字分解,每位遍历
- 思维,归纳,找规律
- 思维+打表(或者通过举例)推导公式
- DFS搜索、BFS搜索
- 素数的判断,三重暴力枚举
- 贪心
- 整数缩放,先放大后缩小(或者用String模拟)
- 字符处理
- 字符串+逆序对+前缀+后缀
- 字符串和数字之间转换
- 字符串与整数相互转化
- 字符串子串
- 最大公约数
- 最小生成树
- 最短路径(floyd,迪杰斯+求最大公约和最小公倍)
常考点
- 标准模板STL(Java 叫容器、Python 工具对象看上期课程)
- 大数与高精度的加减乘除运算(Java 用大数类,C++ 动手String模拟,Python直接算)
- 并查集
- 数学(多角形面积公式、计算机几何高数足够等)
- 辗转相除求最大公约数
- 质数判断
- 位运算(与或非)
- Hash(hash表用map,Python 叫字典)
- 前缀和与差分法
- 贪心算法
- 线性动态规划问题
- 暴力、模拟、思维
- 枚举法(线性枚举、组合型枚举,排列型枚举,指数型枚举
- 递归与搜索(DFS与BFS)
- 全排列
- 最短路(Floy、Dijkstra、SFPA)
- 最小生成树(prim算法及Kruskal算法)
- 鸽巢原理(抽屉原理)
必会
枚举
排列
DFS
计数DP,数位DP
二分
贪心
floyd
kruscal
组合数学
数论
技巧
22年的题,正常做题,不会了再去练暴力
23年的题,直接去练暴力
每个题新建一个文件夹
先写一个最短路的模板,最小生成树的模板,写个DFS、BFS的框架
简单题做会,难题暴力练会