算法
小李AAA
算法狗
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并查集
并查集很容易理解的一种数据结构,简单介绍一下拿着模版直接用即可。 用集合中的某个元素来代表这个集合,该元素称为集合的代表元。 一个集合内的所有元素组织成以代表元为根的树形结构。 对于每一个元素 parent[x]指向x在树形结构上的父亲节点。如果x是根节点,则令parent[x] = x。 对于查找操作,假设需要确定x所在的的集合,也就是确定集合的代表元。可以沿着parent[x]不断原创 2018-01-30 20:40:30 · 132 阅读 · 0 评论 -
线段树
线段树,类似区间树,它在各个节点保留一条线段(数组中的一段子树组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是[c+1,b]。 模版 //区间和样例 #in原创 2018-01-26 22:01:56 · 262 阅读 · 0 评论 -
树状数组
树状数组和线段树很像,同样也是解决区间的问题 图解 0001 C1 = A1 0010 C2 = A1 + A2 0011 C3 = A3 0100 C4 = A1 + A2 + A3 + A4 0101 C5 = A5 0110 C6 = A5 + A6 0111 C7 = A7 1000 C8 = A1 + A2 + A3 + A4 + A5 + A6 + A7原创 2018-01-29 12:42:06 · 165 阅读 · 0 评论 -
带期限的作业排序
原理: 贪心,先把作业按照效益排列,依次筛选并入集合J形成可行解,最后得出最优解。 源码加注释 #include using 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 · 2214 阅读 · 0 评论
分享