线型 队列先进先出
L++:if(l==1001)l=0;
T++; If(t==1001)t=0;
循环队列
栈 先进后出 bottom=-1;top加加减减;
树型 普通树 大数组存孩子
一维数组加静态链表存孩子
两个数组 第一个孩子和兄弟 (想象之外的东西)
二叉树 左右孩子数组lchild[],rchild[].
完全二叉树 数组
堆(排) 完全二叉树+大小
数组尾加新元素然后调整 和父亲len/2
取走堆顶元素 和左右子树调整
排序二叉树 小左大右储存采用一般二叉树
并查集 并 将父亲连在一起 可以化为菊花图
查 父亲相同则为同一集合
哈夫曼树
图 邻接矩阵邻接表 (权值 方向)
储存 数组 栈 队列 堆
链表 并查集普通树 邻接表
DP 划分型 划分为几个区间为阶段 乘积最大问题
坐标型 f[x][y]=f[x+-?][y+-?]+?[x][y]数字三角形
区间型 合并石子
线型 lis lcs
背包型
01背包
For(i=1;i<=n;i++)
For(j=m;j>=wi[i];j--)
F[j]=max(f[j],f[j-wi[i]])
多重背包
For I =1 to n
For j=wi[i]to m
For k= 0 to ci[i]
F[x][j]=max(f[x-1][j-k*wi[i]]+k*vi[i],f[x-1][j])
完全背包
for i =1 to n
for j =wi[i] to m
f[i][j]=max(f[x][j-wi[i]],f[x-1][j]);
分组背包
每组01 f[i][v]=max(f[i-1][v-j]+wi[i][j],f[i][v]