ACM从入门到???

ACM从入门到放弃

前言

写给我校新接触C语言的同学们,大概是ACM竞赛会涉及到的一些知识。因个人水平有限,同时我也是刚刚开始打ACM,内容并不会很深入。如有错漏之处,请加QQ:1208874505 联系我(Ice_teapoy)。具体内容大概有:

  1. 算法略讲
  2. 板子
  3. 奇怪的吐槽
  4. 其他

对刚刚接触算法竞赛的同学们的建议

1.如果对语言还不是很熟悉,请先多做一些入门题。不仅是为了掌握语言,更是为了熟悉编程思维。同时刷水题不要上瘾,只追求过题数量并不能真正提高水平。水题150~200左右应该开始比较系统的算法学习。
2.学习算法最好的方式是了解思想后自己尝试实现,再去阅读别人的板子寻找别人代码的优点。打印几百页板子甚至背熟都并没有什么用。
3.ACM是团队竞赛,所以发展自己擅长的方向很重要(DP、数论、图论、计算几何、数据结构等),但擅长Debug的队友显然更受欢迎。
4.日常刷题尽量计时,不要钻牛角尖,远超自己能力范围的算法没必要死磕。你花一两个月完成的代码不一定会(甚至一定不会)考到类似的题,即使考到,你也不一定能调出来。
5.前人的经验不一定要听,方法很多,思路很广,不走寻常路不是坏事。但前人的教训最好吸取,ACMer的竞赛生涯不长,掉进坑里还是挺疼的。
6.ACM竞赛是一种很难的东西,事实上,它只适合少部分人,而且知识更新换代的速度非常快。如果想取得好的成绩需要付出很大的精力。注意是付出很大精力,并不仅仅是时间。
7.很多时候非技术原因才是竞赛失利的主要原因,考试策略和调整心态非常重要。

技能树

如果你了解C的基本语法,明白什么是变量、数据类型、判断、循环、数组、函数,并能够使一份CE的代码成功运行起来,那么这份教程将比较适合你。否则,请百度C语言+变量(数据类型、if语句、switch语句、循环、数组、函数等) _(:3丿∠) _

另外,以下知识列表以知识点方向为分类标准,并不是推荐学习顺序

算法详解与模板待添加。

基础

基础知识
模拟
排序
递推
递归
搜索
贪心
  • 贪心算法
二分

图论

邻接矩阵存图与遍历
  • Vector存图与遍历
  • 邻接表存图与遍历
一笔画问题
哈密顿回路问题
差分约束系统
生成树算法
最短路算法
  • Floyd多源最短路算法
  • Dijkstra单源最短路算法
  • 朴素Dijkstra
  • 堆优化Dijkstra
  • Bellman-Ford单源最短路算法
  • SPFA单源最短路算法
  • Johnson多源最短路算法
  • Dijkstra次短路算法
  • K短路算法
LCA(最近公共祖先)算法
  • 倍增法
  • 树链剖分
  • Tarjan
强连通分量(缩点)
  • Kosaraju算法
  • Tarjan算法
二分图算法
  • 匈牙利二分图最大匹配算法
  • Dinic实现二分图最大匹配(网络流)
  • *KM最大权匹配算法
仙人掌与圆方树

动态规划(DP)

线性DP
  • LIS(最长上升子序列)
  • LCS(最长公共子序列)
  • LCIS(最长公共上升子序列)
  • 最大子段和问题
背包DP
  • 0-1背包问题
  • 输出方案
  • 完全背包问题
  • 多重背包问题
  • 混合背包问题
  • 二维费用背包问题
  • 分组背包问题
  • 有依赖背包问题
  • 泛化物品
  • 求次优解、第K优解
区间DP
树形DP
数位DP
概率期望DP
状态压缩DP
DP优化
  • 斜率优化
  • 数据结构优化
  • 矩阵乘法优化
  • 鹰蛋问题

数据结构

队列
  • 单调队列
  • 二叉堆
  • 斐波那契堆
  • 可并堆
  • 配对堆
并查集
  • 加权并查集
  • 可持久化并查集
线段树
  • 可持久化线段树
  • 权值线段树
  • 动态开点线段树
树状数组
ST表
块状链表
Splay(伸展树)
Treap
范浩强treap
替罪羊树
树套树
LCT(Link-Cut Tree)

网络流

Edmonds-Karp最大流算法
Dinic最大流算法
ISAP最大流算法
HLPP最高标号预流推进算法
zkw最小费用最大流
Primal-Dual原始对偶算法
上下界最大流

字符串算法

高精
KMP匹配算法
Manacher算法
字符串hash
Trie树
后缀数组
AC自动机
后缀自动机

数论

欧几里得算法
  • 辗转相除法
  • 扩展欧几里得算法
逆元
快速幂
筛法求积性函数
  • 莫比乌斯函数
  • 欧拉函数
  • 约数个数
  • 约数的和
中国剩余定理
BSGS
整除分块
Pollard-Rho算法

计算几何

基础表示
常用函数
多边形
凸包
半平面交
旋转卡壳
最小圆覆盖
三维计算几何
多维立体几何

随机化算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值