蓝桥杯国赛备赛总结知识点,以老师给的为原型,添加自己理解,供大家参考,后期不定时更新。
基础
1、熟练掌握API1.8常用方法
2、大数(高精度)加减乘除
3、并查集
模板:
public class dome {
int[] parent;
int[] rank;
void init(int x) {
parent=new int[x];
rank=new int[x];
for (int i = 0; i < x; i++) {
parent[i]=i;
}
}
int find(int x) {
return parent[x]==x?x:(parent[x]=find(parent[x]));
}
void merge(int x,int y) {
int a=find(x),b=find(y);
if(rank[x]<=rank[y])
parent[x]=y;
else
parent[y]=x;
if(rank[x]==rank[y]&&x!=y)
rank[y]++;
}
}
4、线段交点、多角形面积公式、辗转相除(两行内)、质数、位运算、hash表等
数据结构
1、数组:一维二维数组、链表
区间问题:前戳和、树状数组、线段树
2、字符串:常用操作
大部分字符串题都可以用动态规划,其他还有滑动窗口等。
3、队列:增删改查
4、树:重点二叉树、二叉树的三种遍历(前序、中序、后序)等
平衡树/线段树
5、图:有向图、无向图。
存储用邻接表,可以用set或map保存顶点信息等。
常涉及的算法:最小生成树算法prim算法及Kruskal算法、最短路径算法Dijkstra(单源,不可有负权值)算法、Floyd(所有点最短路,可为负)算法、BellmanFord(SPFA)(可为负)算法等。
6、堆:先进先出
栈:堆排序
算法
1、基础算法:暴力、穷举、递归、全排列,掌握十大经典排序算法(优先用API中排序算法)
2、搜索:DFS(递归与非递归)、BFS
结合剪枝、记忆化等。
3、动态规划:
经典应用:投资问题、背包问题、最长公共子序列LCS、图像压缩、最大子段和、最优二分检索树、生物信息学中的动态规划算法等
4、贪心算法:最优前缀码、最小生成树prim算法及Kruskal算法、单源最短路径Dijkstra算法
5、回溯:背包问题、最大团问题、货郎问题、圆排列问题、连续邮资问题等
6、网络流算法:最大流问题Ford-Fulkerson、EK算法及Dinic有效算法、二分图匈牙利算法、最小费用流Floyd算法等
注意:以上为重点掌握知识点,一定要做到:熟知思想、掌握经典案例、能用程序代码实现。
其他训练中遇到的知识点也一并学习掌握。