信息学奥赛一本通(提高组)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息学奥赛⼀本通(提⾼组)
⼀、贪⼼算法
选择不相交区间问题:给定n个开区间,选择尽量多个区间,是得这些区间两两没有公共点。
(例:活动安排)
按照结束时间由⼩到⼤的顺序排列,依次考虑各个活动,如果没有和已经选择的活动冲突,就选;否则就不选。
区间选点问题:给定n个闭区间,在数轴上选尽量少的点,是得每个区间内都⾄少有⼀个点(不同区间内含的点可以是同⼀个)。
(例:种树)
⾸先按照区间的结束位置从⼩到⼤排列。
然后在区间中进⾏选择:对于当前区间,若集合中的点不能覆盖它,则将区间末尾的数加⼊集合。
贪⼼策略:取最后⼀个。
区间覆盖问题:给定n隔壁区间,选择尽量少的区间覆盖⼀条指定的线段区间。
(例:喷⽔装置)
将所有区间按照左端点由⼩到⼤排序,依次处理每个区间。
每次选择覆盖点s的区间中右端点坐标中最⼤的⼀个,并将s更新为该区间的右端点坐标,直到选择的区间包含t。
贪⼼策略:在某时刻的s,找出⼀个满⾜a[i]<=s的b[i]最⼤值即可。
流⽔作业调度问题:n作业,两机器,先a后b,求总时间最短。
(例:加⼯⽣产调度)
直观:让a没有空闲,让b空的少
Johnson算法:对于a<b的集合,按s⾮减序排列;对于a>=b的集合,按照b⾮升序排列
带期限和罚款的单位时间任务调度:n任务,每个都能在单位时间内完成,每个都有对应的完成期限及完成不了的罚款数额,确定执⾏顺序使罚款最少。
(例:智⼒⼤冲浪)
按照罚款数额由⼤到⼩排序,然后依次进⾏安排。
安排规则为:使处理当前任务的时间在既在期限之内,⼜尽量靠后,如果都已经排满,则放弃处理并扔在最后.
⼆、⼆分(单调性)与三分(单峰性)
⼆分的边界问题:
⼆分常见模型:⼆分答案(将最优化问题转为判定性问题),⼆分查找(求解分界点),代替三分(⼆分导函数求极值,定义域通常定为整数域)。
三分:任取两点判断好坏不断缩⼩区间。
三,搜索
dfs的优化技巧:优化搜索顺序(对象),排除等效冗余,可⾏性剪枝(上下界剪枝),最优性剪枝,记忆化。
例:数的划分,⽣⽇蛋糕,⼩⽊棍,weight,Addition Chains。
双向bfs等
四、图论
最⼩⽣成树:
prim适⽤于疏密图,kruskal使⽤于稀疏图。
例:北极通讯⽹络。
⼀些相关拓展:最短路径⽣成树(例,),次⼩⽣成树,严格次⼩⽣成树
最⼩环问题:
对于⽆向图,考虑Floyd,枚举与k相邻的两个点求解最⼩值。
对于有向图,考虑dijkstra,从1到n中枚举s,s是堆中第⼀个取出的结点,扫描所有出边,更新完成后使d[s]为⽆穷⼤,当s第⼆次被取出时,d[s]即为所求。
最短路:
Floyd:可处理⽆向与有向图,边权可正可负,不能有负环。
可求解最⼩环。
每对点之间。
(堆优化):处理⾮负边权。
单源。
Bellman-Ford:单源,可解决负边权
(队列优化的Bellman-Ford):可判断,稀疏图上效率较⾼,稠密图易退化,输出路径可⽤数组记录(注意倒序输出)。
最短路计数问题:在所使⽤的求最短路的⽅法中加上计数操作即可。
差分约束:可转换为有向图的路径问题,例题详见博客,感觉差分约束还是⽐较容易看出来的
强连通分量:使⽤tarjan算法,⽤途:有向图的,解决2-SAT问题
割点和桥
欧拉回路
五、字符串
:双哈希(选取孪⽣质数),⾃然溢出;
:线性,单模式串匹配,
AC⾃动机:trie上的kmp,多模式串匹配
(马拉车)算法:判断回⽂串
六,数据结构
树状数组
RMQ问题:,以及与线段树的
及其拓展:
倍增求LCA:orzzz,处理数组时注意从前或者从后处理,基本不会单独考出来,⼀般在树上跑倍增qwq
树链剖分(再说)
平衡树(Treap)(再说)
七、动态规划
区间dp:分解合并求解,阶段特征明显,类似分治,f[i,j]=max(f[i][k]+f[k+1][j]+决策),k为划分点
树形dp:基本模型都是⼀棵树或者森林。
仔细考虑每个节点有什么状态,这些节点的状态与⽗节点⼦节点的状态都有什么联系,也就是如何由⼦结点的最优值推出⽗结点的最优值。
经典问题:树的重⼼:以重⼼为根的有根树的最⼤⼦树的结点数最⼩。
树的最长路径(最远点对):找到距离最远的两个结点。
树的中⼼问题:中⼼到树中的其他结点的最远距离最近。
普通树形dp:考虑状态,取或不取。
⼀些类型:由根分成左⼦树和右⼦树两部分:考虑左⼦树为空,右⼦树为空,左右⼦树都⾮空三种情况
背包类树形dp:⼀般以结点编号作为树形dp,“体积”作为第⼆维状态
求树的最长链问题:对于每个结点i记录以i为根的⼦树到叶节点的最⼤距离及次⼤距离,不断更新,最后相加取最⼤值
求树的最⼤独⽴集:考虑每种状态下的策略问题,从⽽推出转移⽅程
普通树的dp:依旧是考虑每个节点的状态,考虑该状态下的策略
数位dp
状压dp
单调队列优化dp
斜率优化dp
⼋、数学基础
快速幂:连续分解
质数:算术基本定理,质数分布定理,质数判定及筛法,质因数分解
约数:求1~n每个数的正约数集合()
同余问题
矩阵乘法
组合数学
博弈论。