上一页 1 2 3 4 5 6 7 8 ··· 22 下一页
摘要: 题意:找到一个字符串内长度不小于五的可不重叠的最长重复子串,子串的所有数字同时加上或减去一同一个数这时两个字串重复也算重复出现。分析:首先最所有数字作差,s[i]=s[i+1]-s[i],这样一来及时原先的字串是进行过加或减那他们的差值也会相同,所以转换为求现有s[]中大与5的最长重复字串,用后缀数组。首先由二分答案的方法将问题变成判定性的:长度大于k的重复字串有没有?然后将height数组分组,每组内的后缀之间的height都要大于k,如果每组内的后缀之间的最长公共前缀有大于k的而且这两个后缀的sa[]之差大于k就说明存在长度至少为k的不重复子串。求最长公共前缀就要用到height数组,因为 阅读全文
posted @ 2013-09-05 21:13 z.arbitrary 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 引用自HH大牛的模板http://www.notonlysuccess.com/index.php/sa/// File Name: suffix.cpp// Author: Zlbing// Created Time: 2013年09月04日 星期三 19时57分46秒#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define CL(x,v); memset(x,v,sizeof(x));#define I 阅读全文
posted @ 2013-09-05 21:06 z.arbitrary 阅读(764) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个人,有限对的人可以在一起工作,问最多能有多少对.分析:任意图的最大匹配// File MAXName: 1099.cpp// Author: Zlbing// Created Time: 2013/8/31 14:37:38#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define CL(x,v); memset(x,v,sizeof(x));#define INF 0x3f3f3f3f#defi 阅读全文
posted @ 2013-08-31 14:55 z.arbitrary 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 匹配就是一个图中一堆没有端点的边的集合,求最大匹配就是求这个边集最大有多少条边。无论是任意图还是二分图,都有以下定理:当前匹配是最大匹配当且仅当不存在增广路。增广路的定义就是,一条包含奇数条边的路径,最前和最后的两条边都是非匹配边,且对于路径非两端的点,都连接着一条匹配边和非匹配边。求图的匹配的算法就是不断地找增广路,把增广路上的匹配边变成非匹配边,非匹配边变成匹配边。对于二分图来说,只要从一个没有被匹配到的点开始bfs(dfs)一下就能找到增广路(如果确实有增广路)。但是对于任意图来说,从一个没有被匹配到的点开始bfs(dfs)不一定能找到,能不能找到取决于遍历的顺序。于是,为了使任意图可以 阅读全文
posted @ 2013-08-31 14:23 z.arbitrary 阅读(2265) 评论(0) 推荐(1) 编辑
摘要: 在线LCA如求A,B两点的LCA,先计算出各个结点的深度d[],然后,通过递推公式求出各个结点的2次方倍的祖先p[],假设d[A] > d[B],则找到d[p[A][i]] == d[B]也就是A的某一祖先与B深度相同,然后,u = p[A][i],通过p[u][i] 与p[B][i]比较找出LCA(巧妙的利用二进制).(p[a][b] 表示与a的距离为2^b的祖先,则p[a][0]表示为a的父亲。如 a->b->c->d->e,a为根, 则p[e][2] 为a)递推公式:p[a][b] = p[p[a][b - 1]][b - 1]/* 2^17=131072; 阅读全文
posted @ 2013-08-21 16:39 z.arbitrary 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 今天又重新复习了下并查集,发现食物链挺好的。这次用的是枚举他们之间的关系,我觉得比赛时我也应该会这么写,而不是公式判断。题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条 阅读全文
posted @ 2013-08-21 14:45 z.arbitrary 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树,每条边都有一定的权值,q次询问,每次询问某两点间的距离。分析:这样就可以用LCA来解,首先找到u, v 两点的lca,然后计算一下距离值就可以了。这里的计算方法是,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(v, v)]。// File Name: 2586.cpp// Author: Zlbing// Created Time: 2013年08月19日 星期一 10时59分47秒#pragma comment(linker,"/STACK:102400000,102400000")#i 阅读全文
posted @ 2013-08-20 11:39 z.arbitrary 阅读(308) 评论(0) 推荐(0) 编辑
摘要: LCA离线算法它需要一次输入所有的询问,然后有根节点开始进行深度优先遍历(DFS),在深度优先遍历的过程中,进行并查集的操作,同时查询询问,返回结果。题意:求A ,B两点的最近公共祖先分析:dfs+并查集// File Name: 1330.cpp// Author: Zlbing// Created Time: 2013年08月18日 星期日 16时11分18秒#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;# 阅读全文
posted @ 2013-08-19 16:32 z.arbitrary 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题意:有猫C个和狗D个,有V个投票人,每个人喜欢猫讨厌狗或则喜欢狗讨厌猫!求最多能满足多少投票人。分析:两个投票者矛盾的话就连一条边,总数减去最大匹配数/2就是要求的答案// File Name: ACM/HDU/2768.cpp// Author: Zlbing// Created Time: 2013年08月16日 星期五 15时14分15秒#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define CL 阅读全文
posted @ 2013-08-17 15:31 z.arbitrary 阅读(346) 评论(1) 推荐(0) 编辑
摘要: 题意:求无向图最小割是否唯一分析:1、我们先对原图求一次最大流2、对残留网络,我们从S开始,找到所有所有S能到达的点;再从T开始,找出所有能到达T的点。3、判断原网络中是否还有没有访问到的点,如果没有,则唯一,否者,不唯一!// File Name: ACM/ZOJ/2587.cpp// Author: Zlbing// Created Time: 2013年08月16日 星期五 13时38分56秒#include#include#include#include#include#include#include#include#include#include#include#includeusi 阅读全文
posted @ 2013-08-17 14:55 z.arbitrary 阅读(663) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 22 下一页