时隔一年,相比去年一无所知的自己,学到了不少东西,虽然还是很弱,但也颇有收获【学会了打板QAQ】
现在是2017.11.9 21:10,NOIP2017的前两天晚上,明天就要出发,做最后的总结
NOIP考的算法不如省选、NOI广,但也不少,而更注重思维量【本蒟蒻思维就很不好】
总的来说有以下:
1、模拟
2、搜索
3、二分、贪心、倍增等算法思想
4、动态规划
5、图论
6、数论、数学
7、数据结构
模拟
模拟就没什么好说的吧,按照题目所说的去做,但要非常注意的就是考虑周全,尤其是要分类讨论的模拟,这个时候最好先离开键盘,在草稿纸上先理一遍,确定严谨性
搜索
搜索作为在OI中一个极其重要的算法,应用最广泛。
搜索基于枚举的思想,逐个枚举检查答案
搜索可以是一道题的正解,也可以作为很多题的对拍【骗分。。】
总的来说有以下:
DFS
BFS
A*启发式搜索
双向BFS【相遇】
二分 与 贪心
二分
二分通常用来解决最值问题,尤其是最大值最小、最小值最大这类问题
但在确定二分之前,我们必须检验二分对象是否满足二分性质:
1、我们一般对答案二分
2、对于一个答案,我们能有效率地检验是否可行
3、【最重要】答案满足单调性,即k满足条件,比k大或比k小都一定满足
二分通常可以用以替代枚举【O(n) -> O(logn)】
二分代码主要有两种:
求最大值:
int L = 1,R = 1000,mid;while (L < R){mid = L + R + 1 >> 1;if (check(mid)) L = mid;else R = mid - 1;}
求最小值:
int L = 1,R = 1000,mid;while (L < R){mid = L + R >> 1;if (check(mid)) R = mid;else L = mid + 1;}
还有一种是求最接近某个值的二分,这时候大于就给r,小于就给l,等于就是答案,不等于退出时l,r都检查一下
贪心
贪心,顾名思义,就是只考虑当前最优
贪心能解决的问题一定要满足最优子结构,就是一个问题分成多个子问题,主问题的最优解 等于 子问题的最优解之和
动态规划
背包:
01背包、完全背包、分组背包、混合背包、多重背包【二进制优化】、有依赖的背包、满载背包、背包方案
区间dp:
枚举断点O(n^3)
树上dp
状压dp:
用二进制表示集合作为状态进行转移
适用n<=20的数据
LIS、LCS
LIS有nlogn的二分优化算法
以及其他各种dp
图论
最短路
dijkstra
spfa
bell-manford
floyd
生成树kruskal
tarjan强联通分量缩点
拓扑
欧拉回路
【什么网络流应该不考吧。。】
数论、数学
同余性质
gcd、exgcd扩欧
费马小定理【指数的同余】
线性筛
欧拉phi函数
φ(n) = n * (1 - 1/p1) * (1 - 1/p2) * (1 - 1/p3) ...... * (1 - 1/pk)
小于n与n互质的个数
快速幂
组合数
C(n,m) = n! / (m! * (n - m)!)
计算方式:O(n)单算,O(n^2)递推,C(n,k)的和 = 2 ^ n【k∈[0,n]】,二项式定理、杨辉三角
基本计数原理
加法原理、乘法原理、容斥原理
数列
斐波那契数列f[n] = f[n-1] + f[n - 2]
1、1、2、3、5、8、13、21、37、58、95......
卡特兰数 f[n] = f[n - 1] * (4 * n - 2) / (n + 1)
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786......
乘法逆元
一般: ax≡1 (mod p)
a,p互质: x = a^(p-2)
递推:v[i] = -(p/i) * v[p % i]
数据结构
基本数据结构
队列、栈、链表
并查集
用来解决集合的合并与查找
特殊:维护到父节点的路径长
树状数组
线段树
一般线段树维护区间信息、主席树维护历史版本
二叉堆
二叉查找树
splay什么的
查分数组
修改完才查询的最快方法
KMP
字符串匹配
next数组意义:前一个位置的后缀前缀最长相同长度
trie树
也叫字典树,高效查找【什么AC自动机应该不考吧。。。】
总的来说
复赛考的知识点不算广,但思维量考察是很大的,尤其是二分、动归这样精巧的思想,需要我们深入的思考以及细心地分析,明天的考试要静下心,认真考虑细节,就好像手里没有键盘,先想清楚细节再动手,切不可浮躁。
这次的比赛向往了很久,期待了很久,紧张了很久,遐想了很多,也很拼,从一个什么都不会的蒟蒻变成了至少有了些知识储备拿得出手的蒟蒻【= =、】,只愿风平浪静,考试顺利。
鲲鹏展翅翼向天,直上云霄九万里
乘风破浪无所惧,不圆夙愿誓不归
NOIP2017 RP++