RoNgDaZhOnG

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

03 2017 档案

摘要:这次的后缀数组写的成熟点,也好看点,以后生成后缀数组的话就用这里的build_sa()函数吧rank[i]表示以i为起点的后缀在sa数组中的位置,height[i]则表示sa[i]和sa[i-1]的最长公共前缀的长度。有一个定理:height[rank[i]]>=height[rank[i-1]-1 阅读全文
posted @ 2017-03-16 22:20 学无止境-1980 阅读(186) 评论(0) 推荐(0)

摘要:后缀数组的原理很简单,将一个字符串S的所有后缀组成一个字符串数组,并排序,则以后每次判断某个字符串D是不是S的子串只需要strlen(D)*log(strlen(s))的时间复杂度。Codevs1500这题就是一道裸题,考后缀数组的生成,如果一个一个将S的后缀加入到后缀数组中并快速排序需要的时间复杂 阅读全文
posted @ 2017-03-16 22:19 学无止境-1980 阅读(119) 评论(0) 推荐(0)

摘要:题目大意:有一个类似于工业加工生产的机器,起点为1终点为n,中间生产环节有货物加工数量限制,输入u v z c, 当c等于1时表示这个加工的环节必须对纽带上的货物全部加工(即上下界都为z),c等于0表示加工上界限制为z,下界为0,求节点1(起点)最少需要投放多少货物才能传送带正常工作。解题思路: 1 阅读全文
posted @ 2017-03-16 22:16 学无止境-1980 阅读(98) 评论(0) 推荐(0)

摘要:ZOJ3229题目大意:一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝可以和C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能少于Gi,如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照;否则输出-1。 解题思路: 1.增设 阅读全文
posted @ 2017-03-16 22:15 学无止境-1980 阅读(94) 评论(0) 推荐(0)

摘要:今天开始啃网络流了。对于求解无源汇带上下界的网络流,我们可以这样建图:建图模型: 以前写的最大流默认的下界为0,而这里的下界却不为0,所以我们要进行再构造让每条边的下界为0,这样做是为了方便处理。对于每根管子有一个上界容量up和一个下界容量low,我们让这根管子的容量下界变为0,上界为up-low。 阅读全文
posted @ 2017-03-16 22:14 学无止境-1980 阅读(116) 评论(0) 推荐(0)

摘要:Splay树可以利用 我Treap树的程序中的rotate函数实现 Splay(x,S)功能,将节点x伸展的节点S处。Splay(x,S)时有三种情况:1、zig情况。 X是查找路径上我们需要旋转的一个非根节点。 如果X的父节点是根,那么我们用下图所示的方法旋转X到根: 图2 这和一个普通的单旋转相 阅读全文
posted @ 2017-03-16 22:11 学无止境-1980 阅读(76) 评论(0) 推荐(0)

摘要:第一次写传说中的数据结构套数据结构,果然坑了一晚上,不过回头想想也没什么难的。二维线段树是一颗基于X轴的线段树,每颗该线段树的节点又是一颗基于Y轴的线段树。X轴线段树的某个节点所表示的Y轴线段树 维护的是该X轴线段树的两个儿子所表示的Y轴线段树维护的数据之和,如果X轴线段树的这个节点没有儿子,则其表 阅读全文
posted @ 2017-03-12 09:34 学无止境-1980 阅读(190) 评论(0) 推荐(0)

摘要:Codevs1732,这道题要求求fibonacci数列的第N项,1 <= n <= 100000000000000,非常大,普通的O(N)的求法肯定会TLE,所以我们需要用的快速幂矩阵乘法,在O(logN)的时间内即可求出。矩阵的乘法是这样的:我们定义X(i,j)表示矩阵第i行第j列的元素。我们定 阅读全文
posted @ 2017-03-12 09:33 学无止境-1980 阅读(120) 评论(0) 推荐(0)

摘要:半平面交第一次真的好难写啊。。前后加起来起码弄了7小时。半平面交的算法思想并不复杂: 1、将所有向量按极角大小从小到大排序,向量(x,y)的极角=atan2(y,x),当两个向量的极角相等时选择性的保留在较左边的那个 2、运用一种数据结构:双端队列,用phead表示双端队列的头位置,pend表示双端 阅读全文
posted @ 2017-03-12 09:32 学无止境-1980 阅读(172) 评论(0) 推荐(0)

摘要:定义一个multiset集合S:multiset <int> S;如果有重复元素一定要记得使用multiset,stl set默认从小到大排序,upper_bound(x)返回集合中第一个大于x的元素地址,lower_bound(x)返回集合中第一个大于等于x的元素地址。我们可以这样定义一个迭代器: 阅读全文
posted @ 2017-03-12 09:31 学无止境-1980 阅读(181) 评论(0) 推荐(0)

摘要:定义:在一个无向连通图中,若删除某点后,图变成不连通,则称该点为该图的割点; 若删除某边后,图变成不连通,则称该边为该图的桥。 双连通分量有点双连通分量和边双连通分量,分别表示 删去该分量中任意一个点(或者边),该分量还是相连的。 点双连通分量的求法至今我还没找到。。可能在竞赛中不怎么用,边双连通分 阅读全文
posted @ 2017-03-12 09:30 学无止境-1980 阅读(124) 评论(0) 推荐(0)

摘要:强连通分量求解算法有Kosaraju和Tarjan_SCC,Kosaraju需要进行两遍dfs,而Tarjan只需一遍dfs,可见Tarjan的运行效率比Kosaraju高,常数小。而且以后求图的双联通分量、割、桥之类的还需要用到Tarjan,所以学习Tarjan的价值更大一些。Tarjan算法的思 阅读全文
posted @ 2017-03-12 09:29 学无止境-1980 阅读(113) 评论(0) 推荐(0)

摘要:拓扑排序有两种思路,我用的是基于bfs的:将入度为0的点加入队列,每次处理队列中的点,将该点从图中删除 并 相应减少 该点所能到达点 的 入度,若有点入度被减为0,则将该点加入队列,一直这样继续直到所有点被处理完(que.size()==0)。还有一种基于dfs的思路:L:用于存储拓扑排序后的点的序 阅读全文
posted @ 2017-03-12 09:26 学无止境-1980 阅读(108) 评论(0) 推荐(0)

摘要:将田地上的食物取负,求图的最小费用流即为最大费用流的相反数。(ps第一次听说还可以这样用思路:用spfa求最短路,沿着最短路增广。 阅读全文
posted @ 2017-03-12 09:25 学无止境-1980 阅读(128) 评论(0) 推荐(0)

摘要:广搜计算层次图,在层次图上深搜。标准dinic模板。 阅读全文
posted @ 2017-03-12 09:24 学无止境-1980 阅读(95) 评论(0) 推荐(0)

摘要:逼格最高的程序。。但是由于是动态开辟,POJ上超时了,HDU过了,不知道为什么。trie树很简单,没什么说的。附标程: 阅读全文
posted @ 2017-03-06 19:31 学无止境-1980 阅读(114) 评论(0) 推荐(0)

摘要:求失配函数的思路:我们设主串为M,子串为N,则 失配函数存在这样的递推关系,求nex[i+1]时:使j=nex[i]。1、若N[j]==N[i]则nex[i+1]=j+1;2、若N[j]!=N[i]则使j=nex[j];3、若j=0则直接进行步骤1;就这么简单。。但是好难理解。POJ3461附标程: 阅读全文
posted @ 2017-03-06 19:29 学无止境-1980 阅读(76) 评论(0) 推荐(0)

摘要:b:时间限制:1s空间限制:64M题目大意:有一个图有n个点,且有m条通道连通这n个点,其中第1个点的能量永远恒定为0,初始所有点的能量均为0。第i条通道连接着x_i,y_i两个点,而且它两端点的能量之差不会超过c_i。在整个图中有k个能量源,初始的时候能量源均为休眠状态。现在Alice和Bob玩一 阅读全文
posted @ 2017-03-06 19:28 学无止境-1980 阅读(167) 评论(0) 推荐(0)

摘要:treap树只需要单旋,可以写在一个函数中。当需要删除某点时只需不断将这个点下旋知道它只有少于一个的儿子,让他的 儿子 或者 空 取代它。插入时先插入,然后从底下向上通过旋转维护堆的性质。下面附标程: 阅读全文
posted @ 2017-03-06 19:27 学无止境-1980 阅读(130) 评论(0) 推荐(0)

摘要:代码第32、33行的顺序一定不能反!要注意。 阅读全文
posted @ 2017-03-06 19:26 学无止境-1980 阅读(96) 评论(0) 推荐(0)

摘要:注意:一定要记住点排序时要把 相对距离 作为第二关键字排序,不然会WA。 阅读全文
posted @ 2017-03-06 19:24 学无止境-1980 阅读(85) 评论(0) 推荐(0)