算法竞赛的种子,你是要让它生存,还是毁灭?
毁灭很简单,有无数种方法。火烧 || 践踏 || 冷落 || 曝晒...
可是要让它生存下去,只有一种方法,那就是灌溉 && 施肥...
就像《火星救援》中的Mark种土豆,这一切都需要你的汗水,想象力,甚至一定程度的牺牲。
Mark开动想象力,以燃烧氢气的方式制水;实验失败被炸;即使最后舱门破裂一切化为乌有,这也不算作毁灭。
毁灭,是悔。
就像今天和lxt聊的那样,曾在年级中名次令人望不可及,可是竞赛让她不得不接受文化课上的欠缺,这就是牺牲。
生存,是疼。痛并快乐。
我愿做一位园丁,既不能拔苗助长,也不能疏于打理。
lxt帮我筛选的知识点:
数据结构:
必须掌握:
栈
单调栈
单调队列
队列
链表
哈希表
堆
最好掌握:
线段树
树状数组
图论:
必须掌握:
欧拉图
拓扑排序
树:dfs序,LCA,最小生成树(包括Kruskal,Prim)
搜索(包括BFS,DFS,记忆化)
最短路(包括 SPFA,Floyd,Bellman-ford队列优化)
最好掌握:
网络:二分图(包括最大匹配-匈牙利算法,最大独立集,最大点权覆盖集,最小路径覆盖)
数学相关:
必须掌握:
容斥原理及Ramsey定理
线性素数表
高斯消元
乘法逆元
gcd及扩展gcd
中国剩余定理
快速幂
欧拉函数
概率与期望(初级部分)
排列组合
字符串:
最好掌握:
KMP
Trie
入门:
必须掌握:
模拟
贪心
暴力
高精度
排序
规划:
必须掌握:
动态规划:树型DP,区间DP,数位DP,概率DP,背包(包括01背包,完全背包,多重背包),简单模型(包括LCS,LIS,LCIS)
技巧与思想:
必须掌握:
二分
位运算
离散化
分块
位增(RMQ,LCA)
数列差分化及前缀和
最好掌握:
树上莫队-莫队算法