摘要: 一、背景问题 前提设定 主字符串S 模式串P 问题:找出P在S中出现的位置 例如,主字符串S为"BBC ABCDAB ABCDABCDABDE",模式串P为"ABCDABD",现在询问P是否在S中出现? 二、真前缀&真后缀 真前缀:除了自身以外,一个字符串的全部头部组合; 真后缀:除了自身以外,一个 阅读全文
posted @ 2017-07-28 23:41 GGBeng 阅读(296) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/wall_f/article/details/8248373 阅读全文
posted @ 2017-07-28 23:40 GGBeng 阅读(375) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/u014427196/article/details/48319639 阅读全文
posted @ 2017-07-28 23:40 GGBeng 阅读(95) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646535.html 阅读全文
posted @ 2017-07-28 23:40 GGBeng 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 一、知识目录 字符串处理 ................................................................. 3 1、KMP 算法 ............................................................ 阅读全文
posted @ 2017-07-28 23:29 GGBeng 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 在我的上一篇文章中已经详细讲解了动态规划的原理和如何使用动态规划解题。本篇文章,我将继续通过例子来让大家更加熟练地使用动态规划算法。 话不多说,来看如下例题,也是在动态规划里面遇到过的最频繁的一个题,本题依然来自于北大POJ: 最长公共子序列(POJ1458) 给出两个字符串,求出这样的一个最长的公 阅读全文
posted @ 2017-07-28 10:20 GGBeng 阅读(1689) 评论(0) 推荐(0) 编辑
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2017-07-28 09:08 GGBeng 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 一、知识储备 【重叠子问题】 分治法将问题分解成若干个相互独立的子问题,但一个问题分解所得的子问题并不总是相互独立的,它们可能共享更小的子问题 如果采用递归的分治法求解,势必要重复计算这些共享子问题。 如下面是计算斐波那契数列的分治算法,它将Fib(n)的计算分解为两个较小的问题:计算Fib(n-1 阅读全文
posted @ 2017-07-28 08:30 GGBeng 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 【内置类型】 int -2147483648~2147483647 //现在编译器的int型是32位的,以前为16位的范围是-32768~32767 unsigned int 0~4294967295 long -2147483648~2147483647 unsigned long 0~42949 阅读全文
posted @ 2017-07-27 23:00 GGBeng 阅读(4178) 评论(0) 推荐(0) 编辑
摘要: //过三点求圆心坐标 Point waixin(Point a,Point b,Point c) { double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1*a1 + b1*b1)/2; double a2 = c.x - a.x, b2 = c.y - a. 阅读全文
posted @ 2017-07-27 22:08 GGBeng 阅读(783) 评论(0) 推荐(0) 编辑
摘要: 5.1 半平面交模板(from UESTC) const double eps = 1e-8; const double PI = acos(-1.0); int sgn(double x) { if(fabs(x) eps)return a.k eps) line[tot++] = line[i]; int head = 0, tail = 1; ... 阅读全文
posted @ 2017-07-27 22:07 GGBeng 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 4.1 求解平面最远点对(POJ 2187 Beauty Contest) struct Point { int x,y; Point(int _x = 0,int _y = 0) { x = _x; y = _y; } Point operator -(const Point &b)const { 阅读全文
posted @ 2017-07-27 22:05 GGBeng 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题解:点击 阅读全文
posted @ 2017-07-27 22:02 GGBeng 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题解:LightOJ 1313 - Protect the Mines(凸包) 阅读全文
posted @ 2017-07-27 21:58 GGBeng 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 程序停止运行:数组开太大; 输入一串单词,可以“string s; while(cin>>s){//代码块}”,因为cin>>s遇到空格会停止; map cnt;cnt.count(key) 表示 返回容器中具有key的元素的数目; set_union( ) 取并集;set_intersection() 取交集; 判断是否已生成某数,可使用set,因为它有count()函数; 检查元素i是否存在... 阅读全文
posted @ 2017-07-27 21:29 GGBeng 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 一、前提引入 我们学过了Bellman-Ford算法,现在又要提出这个SPFA算法,为什么呢? 考虑一个随机图(点和边随机生成),除了已确定最短路的顶点与尚未确定最短路的顶点之间的边,其它的边所做的都是无用的,大致描述为下图(分割线以左为已确定最短路的顶点): 其中红色部分为所做无用的边,蓝色部分为 阅读全文
posted @ 2017-07-27 20:19 GGBeng 阅读(10921) 评论(0) 推荐(1) 编辑
摘要: 一、相关定义 树链剖分:把一棵树剖分为若干条链,然后利用数据结构(树状数组,SBT,Splay,线段树等等)去维护每一条链,复杂度为O(logn)。 树链剖分是解决在树上进行插点问线,插线问点等一系列树上的问题。 假如现在给你一棵树,然后每两条边之间有一个权值,有一些操作,1:x y之间的最大权值是 阅读全文
posted @ 2017-07-27 11:01 GGBeng 阅读(319) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/longshuai0821/article/details/7764267 阅读全文
posted @ 2017-07-27 10:47 GGBeng 阅读(151) 评论(0) 推荐(0) 编辑
摘要: http://yzmduncan.iteye.com/blog/1018358 阅读全文
posted @ 2017-07-27 10:46 GGBeng 阅读(118) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/sprintfwater/article/details/9162041 阅读全文
posted @ 2017-07-27 10:45 GGBeng 阅读(124) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/niuox/article/details/8018280 阅读全文
posted @ 2017-07-27 10:44 GGBeng 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 输出结果为:12345 【更多】 0. 用途:一种构造string的方法 1. 形式:s.substr(pos, n) 2. 解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s) 3. 补充:若p 阅读全文
posted @ 2017-07-27 10:36 GGBeng 阅读(189353) 评论(0) 推荐(20) 编辑
摘要: 一、相关定义 定义:设G = (V,E)是一个有向图,它具有下述性质: 最小树形图就是有向图G = (V, E)中以vi为根的树形图中权值和最小的那一个。 另一种说法:最小树形图,就是给有向带权图一个特殊的点root,求一棵以root为根节点的树使得该树的的总权值最小。 性质:最小树形图基于贪心和缩 阅读全文
posted @ 2017-07-27 10:33 GGBeng 阅读(10601) 评论(2) 推荐(4) 编辑
摘要: 问题一:结构体内的next是什么意思? 问题二:edge[cnt].next = head[start]; head[start] = cnt++; 这两个语句什么意思? 问题三:for(int i=head[u]; i!=-1; i=edge[i].next) 这又是什么意思? 参考:点击 阅读全文
posted @ 2017-07-27 09:32 GGBeng 阅读(1634) 评论(0) 推荐(0) 编辑
摘要: 一、相关定义 RMQ问题 求给定区间的最值; 一般题目给定许多询问区间。 常见问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。 解决方法 二、ST(Sparse Table)算法 本节介绍了一种比较高效的在线算法(ST算法)解决 阅读全文
posted @ 2017-07-26 08:45 GGBeng 阅读(195) 评论(0) 推荐(0) 编辑