学习/复习记录
文章平均质量分 61
LOI_Sherlock
日拱一卒,功不唐捐。
展开
-
【学习记录】二分图染色
Q:什么是二分图? A:一张图,如果能把所有顶点分成两份,每一份中的顶点都互不连接,并且每个顶点都与另一份中的某一个或几个顶点有边相连,那么这个图就是二分图。Q:二分图能干什么? A:染色、匹配。染色刚学了,匹配不会,也不打算学。Q:什么是二分图染色? A:假设有红黑两种颜色。从一个顶点出发,先把这个顶点染成红色,再把与这个顶点相邻的所有顶点染成黑色,再把与黑色顶点们相邻的所有顶点染成红色……原创 2017-10-29 20:48:34 · 636 阅读 · 0 评论 -
【复习记录】拓扑排序
概念给出多对关系(a,b),表示a在b之前。最后确定一个序列,使整个序列满足所有的(a,b)的过程就是拓扑排序。实现邻接表+(优先)队列 输入时处理每个点的入度 开始时将所有入度为0的点入队,每次弹出时入度–应用hzoj 1285 确定比赛名次 由于规定编号较小的先输出,所以用小跟堆维护。 codevs2833 奇怪的梦境 记录弹出的点的数量,使初始点数与之作差即可。原创 2017-11-04 16:34:22 · 293 阅读 · 0 评论 -
【复习记录】Tarjan
概念Tarjan是在有向图中找环的算法。 模板及模拟过程实现记录到达每个点的时间t和每个点往前能走到的t最小的点的t。这个最小的t就是环里的代表元素。 具体实现用栈。 方法是dfs。应用1、求环的数量codevs 2822 爱在心中 的第一问:求大于1的强连通分量的数量 codevs 1332 上白泽慧音 输出最大的环2、缩点codevs 2822 爱在心中 的第二问 缩点后找出度为0的原创 2017-11-04 16:11:02 · 333 阅读 · 0 评论 -
【复习记录】树上倍增
概念树上倍增一般是求lca。在找lca的时候可能还会求一下最大值最小值什么的。 lca–最近公共祖先。 不再急急忙忙地刷题找题解了突然开始思考这个东西的意义。。。 倍增求lca的过程相当于在树上找最短路的过程。 小机房的树明明可以最短路解决呀,, 货车运输也可以在最大生成树上求最短路呀,, 当然是为了省时间。 spfa的时间复杂度是O(kE),k为所有顶点进队的平均次数。这样就t了。原创 2017-11-04 15:08:48 · 521 阅读 · 0 评论 -
【复习记录】最小/大生成树
概念在一张图上确定n-1条边,将n个点全部连接。n-1条边就构成一个生成树。 顾名思义,最小生成树就是最小的n-1条边,最大生成树就是最大的n-1条边。 听说Prim怎样优化都不如Kruscal快,所以只学了后者。实现用并查集维护联通关系。 求最小生成树时,先将边从小到大排序。之后遍历每条边,如果一条边的起点和终点不在同一个集合中,将这条边加入答案,合并两个端点。直到加到n-1条边时结束。原创 2017-11-04 12:22:54 · 442 阅读 · 0 评论 -
【复习记录】并查集
概念并查集是一种树形的数据结构,处理集合的合并和查询。最基础的并查集问题就是关于亲戚关系的问题。实现及优化并查集的实现包括预处理、查询根节点、合并以及判断。 其中预处理是把所有点的父亲都指向自己,每个点的深度初始化为0. 查询根节点时用一行标准的路径压缩即可,将一棵树变成了菊花图。 另一个优化是按秩合并,将深度较小的树的父亲指向深度较深的树。但是有些情况下按秩合并并不适用,比如区间染色问题,只原创 2017-11-04 10:52:28 · 406 阅读 · 0 评论 -
【复习记录】BFS
BFS告一段落。 去年暑假刚接触的时候还不知道队列是什么,所以觉得好难。之后BFS好像一直被定位在一个比较水的层次上吧,在一堆高级算法之间显得不是那么重要。 所以停课前对BFS的认知还停留在那棵树上…… 就是这样: 一层一层搜。停课之后断断续续从迷宫开始,每道题都耗时很久,简单些的常常一眼切,然后因为输入以及其它各种智障错误一直跑不出来。平均速度一天一两道题吧,弱得不行。最近做过的题:※原创 2017-10-26 21:50:40 · 396 阅读 · 0 评论 -
【总结】高精度
1、scanf读入字符串#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { char s1[1010],s2[1010]; scanf("%s%s",s1,s2);//&可省略 int lena=strlen(s1); int lenb=strl原创 2017-07-20 23:36:52 · 381 阅读 · 0 评论 -
【学习记录】trie树(字典树)
部分概念引自百度百科和各位神犇资料,侵删。百度百科:字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 就是这个: Trie的核心思想是空间换时间。利用字符串的公共前原创 2017-10-06 11:26:33 · 395 阅读 · 2 评论 -
【学习记录】传递闭包
传递闭包大概就是。。 先将一张图用一个矩阵表示出来,矩阵中的a[i][j]=1表示i~j有一条直接相连的边。这样就得到一个0/1矩阵。传递闭包算法的目的就是根据以上的初始矩阵,探索出最终的矩阵,表示根据初始的直接连接关系,从初始矩阵扩展出一个包括间接连接关系的最终矩阵。这个最终矩阵就是传递闭包矩阵。 概念参考:QWQ这里阐述了传递闭包与矩阵乘法的关系,看不懂先留着:QWQQ很容易想到传递闭包可以原创 2017-10-30 07:31:02 · 2831 阅读 · 0 评论 -
【学/复习记录】最/次/k短路
最短路1、弗洛伊德求多源最短路时间复杂度n^3,慎用。 实现过程就是枚举中间点k,三层for处理出任意两点之间的最短路。 板子:codevs 1077 多源最短路 简单的应用:codevs 1079 回家2、SPFA详解 重点是松弛操作。 用队列实现。 首先将起点入队,然后一层一层扩展节点。每扩展到一个节点都将到达这个节点经过的路径与现有的路径长度比较,若更小,则更新。如果要更新的点不在原创 2017-11-04 19:01:01 · 294 阅读 · 0 评论