随笔分类 -  数据结构与算法

摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 using namespace std; 12 typedef long long LL; 13 const LL MaxN ... 阅读全文
posted @ 2018-08-01 12:36 Lightfall 阅读(124) 评论(0) 推荐(0)
摘要:Kmp就是在一个模板字符串p中找到和字串t相同的串的位置。 重点在于prefix数组的建立。prefix数组代表了t串每个位置截取当前长度的字串的最大相同前后缀。如:a为0, aa为1, ab为0, aabaa为2, aaaaa为4等等。 由于prefix数组代表最大相同前后缀,那么当我们把字串和模 阅读全文
posted @ 2018-07-28 18:25 Lightfall 阅读(114) 评论(0) 推荐(0)
摘要:过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10683 Accepted Submission(s): 4699 Problem Des 阅读全文
posted @ 2018-07-24 11:27 Lightfall 阅读(113) 评论(0) 推荐(0)
摘要:今天在B站看了一个树形DP教学视频有所收获,做一个小小的总结 AV号和链接在这:av12194537 那么先介绍一下树形DP 树形DP就是在树这个特殊的数据结构上进行的DP。有两种方向:自顶向下和自底向上。 树形DP运用了DFS的方式。 一般来说都是用自底向上的方向,也就是从叶子节点到根节点。如果采 阅读全文
posted @ 2018-07-21 16:52 Lightfall 阅读(576) 评论(0) 推荐(0)
摘要:最小生成树就是一张图能生成的边权最小的树。 方法(Kruskal算法):将所有边权从小到大排序,然后一条一条边检查,如果加入这条边形成了回路,那么不加入树中,否则加入。至于如何判断回路,用并查集维护即可。 代码: 阅读全文
posted @ 2018-07-19 11:27 Lightfall 阅读(745) 评论(0) 推荐(0)
摘要:While Farmer John rebuilds his farm in an unfamiliar portion of Bovinia, Bessie is out trying some alternative jobs. In her new gig as a reporter, Bes 阅读全文
posted @ 2018-07-18 21:23 Lightfall 阅读(215) 评论(0) 推荐(0)
摘要:Dijkstra算法主要是用来查找单源最短路。 Dijkstra算法主要过程: 用一个dis数组装源点距离其他点的距离。然后每次找到距离最短且未被标记的点,以该点为中转点对其他点进行松弛并标记该点。最终的dis数组就是源点到其他点的最短路径长度。 代码: 阅读全文
posted @ 2018-07-18 11:16 Lightfall 阅读(185) 评论(0) 推荐(0)
摘要:以下内容摘自百度百科: 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Ord 阅读全文
posted @ 2018-07-17 11:15 Lightfall 阅读(128) 评论(0) 推荐(0)
摘要:方法: 对于某个序列,设一个数组,将序列第一个数放入,然后再一个一个判断序列下一位,如果大于当前数组的末尾元素,则加入数组,否则利用二分法找到第一个大于等于当前数的元素并替换,最后这个数组的长度len就是最长上升子序列的长度。 正常DP求LIS的复杂度是O(n^2),如果面对非常大量的数据的回收怎么 阅读全文
posted @ 2018-07-14 10:40 Lightfall 阅读(262) 评论(0) 推荐(0)
摘要:用筛法求素数的基本思想是:把从1开始的、某一范围的正整数从小到大排列,1不是素数,首先把它筛掉。剩下的数中选择最小的是素数的数,然后筛掉它的倍数。以此类推直到结束。 int vis[MaxN]; void Sieve() { for(int i = 2;i <= MaxN;i++) { if(vis 阅读全文
posted @ 2018-07-14 01:57 Lightfall 阅读(139) 评论(0) 推荐(0)
摘要:GCD(最大公约数) (1)辗转相除法(欧几里得算法)(常用) 将两个数a, b相除,如果余数c不等于0,就把b的值给a,c的值给b,直到c等于0,此时最大公约数就是b (2)更相减损术 将两个书中较大的数a减去较小的数b,如果差c等于0,那么最大公约数为b,如果不等于0,则将b的值给a,c的值给b 阅读全文
posted @ 2018-07-14 01:47 Lightfall 阅读(606) 评论(0) 推荐(0)
摘要:树状数组的核心在于对一段区间的修改和查询,巧妙地把数组用一颗树表示,从而降低了对数组的修改和查询的复杂度。 首先引入lowbit() 如: x =1: 1 &-1 0000 0001 & 1111 1111 = 1 x = 6: 6 & -6 0000 0110 & 1111 1010 = 2 总结 阅读全文
posted @ 2018-07-14 01:25 Lightfall 阅读(117) 评论(0) 推荐(0)
摘要:N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗? Input N个气 阅读全文
posted @ 2018-07-14 00:40 Lightfall 阅读(137) 评论(0) 推荐(0)
摘要:Little Nastya has a hobby, she likes to remove some letters from word, to obtain another word. But it turns out to be pretty hard for her, because she 阅读全文
posted @ 2018-07-13 11:44 Lightfall 阅读(170) 评论(0) 推荐(0)
摘要:Little Elephant loves magic squares very much. A magic square is a 3 × 3 table, each cell contains some positive integer. At that the sums of integers 阅读全文
posted @ 2018-01-21 00:22 Lightfall 阅读(206) 评论(0) 推荐(0)
摘要:快速幂代码 阅读全文
posted @ 2017-11-25 13:19 Lightfall 阅读(107) 评论(0) 推荐(0)