对于刚进入大学的计算机类同学来说,算法与程序设计竞赛算是不错的选择,因为我们每天都在解决问题,锻炼着解决问题的能力。
这里以TZOJ题目为例,如果为其他平台题目我会标注出来,同时我的主页也欢迎大家去访问,探索新平台去提高自己
ACM竞赛随机性会比较大,所以新手请掌握好基础,基础不牢,地动山摇(大一上)
- C语言题 包括TZOJ1452在内的60道C语言实验题,可以利用OJ的搜索,由于这种题目比较多,就不一一列举
- 暴力枚举 3449 5125 4604 2626
- 递归 1483
- 模拟 1093 3715 3726 3727 4391 1148
- 构造 这种题往往在CF中会遇到 刷题集点这里,就是都是英文题
TZOJ200题以后可以尝试着去刷一些简单的算法(大一上以及大一下)
- 前缀后缀和 1532 4262
- 二分 5629 1597 1041 3044(二分100次)
- 排序(归并排序) 2452
- 贪心 1332 5059 1004 3110 4493
- dfs 2777 4408 4833 3104 3360
- bfs 3533 1335 1748 3031
TZOJ300题以后可以尝试着去刷一些简单的算法和数据结构,要参加天梯赛就得刷会了(大一下以及大二上)
- 并查集
- 最短路(Floyd Dijkstra Bellman-Ford)
- 最小生成树(Kruskal Prim)
- stl的应用
- 拓扑排序
TZOJ500题左右就可以入门算法了,在省赛中往往用得到。这里也非常推荐一个题目集USCAO
- 背包 台州学院基础算法学习之背包
- 容斥
- 图论基础
- 凸包
- 树状数组
- 字典树
- 矩阵快速幂
之后大概每个队伍都要分方向了,建议可以打打CF atcoder Wannafly hiho
队伍中有一个人尝试下51nod 的三级算法题或五级算法题
内容往往不是割裂的,而是组合的
图论方向
- 二分图
- 网络流
- 强连通分量
- 割边和割点
- 树的直径
- LCA(最近公共祖先)
- 差分约束
- 树分块
动态规划方向
- 最长上升(不下降等等)子序列
- 区间DP
- 环形DP
- 状压DP
- 概率DP
- 树形DP
- 单调队列优化DP
数据结构方向
- 线段树
- 莫队
字符串方向
- KMP 2897
- HSAH
- AC自动机
- SA(后缀数组)
- SAM (后缀自动机)
组合数学方向
- 母函数
- 线性求逆元
- 组合数 51nod 1829
- 组合数学上的dp累加
计算几何方向
- 扫描线 Color it
- 线段求交
- 半平面交
- 随机化算法
数论方向
- 费马小定理 3151
- 扩展欧几里得 3343
- 高斯消元 1676 2968
- 欧拉函数 3303
- 莫比乌斯函数
- 积性函数
- FFT(快速傅里叶变换) 5482 Gym - 101667H CodeForces - 528D
- Miller-Rabin 素数检测 2646 4383
- RSA等加密算法 1196
线段求交 5625
计算机网络配置 Gym 100623A