算法
小李AAA
算法狗
展开
-
并查集
并查集很容易理解的一种数据结构,简单介绍一下拿着模版直接用即可。用集合中的某个元素来代表这个集合,该元素称为集合的代表元。一个集合内的所有元素组织成以代表元为根的树形结构。对于每一个元素 parent[x]指向x在树形结构上的父亲节点。如果x是根节点,则令parent[x] = x。对于查找操作,假设需要确定x所在的的集合,也就是确定集合的代表元。可以沿着parent[x]不断原创 2018-01-30 20:40:30 · 104 阅读 · 0 评论 -
线段树
线段树,类似区间树,它在各个节点保留一条线段(数组中的一段子树组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是[c+1,b]。模版//区间和样例#in原创 2018-01-26 22:01:56 · 221 阅读 · 0 评论 -
树状数组
树状数组和线段树很像,同样也是解决区间的问题图解0001 C1 = A10010 C2 = A1 + A20011 C3 = A30100 C4 = A1 + A2 + A3 + A40101 C5 = A50110 C6 = A5 + A60111 C7 = A71000 C8 = A1 + A2 + A3 + A4 + A5 + A6 + A7原创 2018-01-29 12:42:06 · 131 阅读 · 0 评论 -
带期限的作业排序
原理:贪心,先把作业按照效益排列,依次筛选并入集合J形成可行解,最后得出最优解。源码加注释#includeusing namespace std;const int maxn=1e5+7;int d[maxn],p[maxn],J[maxn];//期限、效益、可行解 void sort(int n){//插排 for(int i=1;i<=n;i++){ int原创 2018-02-05 21:06:52 · 2120 阅读 · 0 评论