议题:AC自动机(Aho-Corasick
Automation)分析:此算法在1975年产生于贝尔实验室,是著名的多模式匹配算法之一;一个常见的例子就是给定N个单词,给定包含M个字符的文章,要求确定多少个给定的单词在文章中出现过;AC自动机在匹配文本时不需要回溯,处理时间复杂度与pattern无关...
分类:
其他好文 时间:
2014-05-28 23:00:00
阅读次数:
236
对Big
Oh的新的认识一个问题,它有很多种算法都能实现。每种算法它的时间、空间复杂度不一样。比如:问题1: 求最大连续子序列和的问题,可以有O(n3)、O(n2)、O(nlogn)和O(n)四种时间复杂度的解法。请看下面的代码:一、O(n3)算法 二、O(n2)算法 三、O(nlogn)算法用分治...
分类:
其他好文 时间:
2014-05-26 19:17:41
阅读次数:
234
最近要毕业了,有半年没做比赛了.这次参加百度之星娱乐一下.现在写一下解题报告.这次比赛大牛都不屑于做百度之星了,于是我很幸运达到前百名,百度不知道会不会实现说的那样发一件衣服.这次比赛有四道题,起初只是随便做做,所以我是倒着做的.先看看四道题的类型:Energy
Conversion 暴力 复杂度 ...
分类:
其他好文 时间:
2014-05-26 17:06:11
阅读次数:
252
1.RMQ问题
RMQ (Range Minimum/Maximum Query):对于长度为n的数组A,回答若干询问RMQ(A,i,j)(i,jRMQ问题是指求区间最值的问题。最简单的方法,就是遍历数组直接搜索,但是这种方式时间复杂度是O(n)。对于数组长度较大,性能要求高的场景不适用。
2.ST(Sparse Table)算法
ST算法是一种更加高效的算法,以O(nlog...
分类:
其他好文 时间:
2014-05-25 22:28:29
阅读次数:
375
算法1
用两个for循环定位子序列的上下界,然后再用最内部的一个for循环求出上下界之间的元素和。
时间复杂度:O(N³)。
代码:
int MaxSub(int *a, int n)
{
int sum = 0;
int tmp;
for (int i = 0; i < n; i++)
{
for (int j = i; j <...
分类:
其他好文 时间:
2014-05-25 21:28:44
阅读次数:
243
问题:
给定两个字符串,S,T,返回S中包含T中所有字符的最短的字串,若不存在,则返回"".时间复杂度为O(n)。
例如:S = "ADOBCODEBANC"
T = "ABC"
返回BANC
生活场景:
把问题具体化现实化一点。有n层楼,每层楼里放有一个物品,现在老板给你一个物品清单,里面是要你集齐的物品,你可以乘坐电梯,但是电梯只停一次,停在哪...
题目:输入一个整数s,打印出所有和为s的连续整数序列(至少含有2个数)。例如输入9,则输出2、3、4和4、5两个序列
方案一:由于序列至少要2个数,则两个数上限值为(1+s)/2,我们可以枚举该序列的起点和终点求所有满足的序列。时间复杂度为O(n^2),效率比较低
方案二:我们设置两个指针start和end分别表示当前序列的起点和终点,并记序列和为sum。当sum = s的时候输出这个...
分类:
其他好文 时间:
2014-05-25 18:18:18
阅读次数:
191
什么是持续集成
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile)
在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。 持续集成正是针对这一类问题的一种软...
分类:
其他好文 时间:
2014-05-25 12:46:24
阅读次数:
239
寒假学的两个算法,普里姆,克鲁斯卡尔终于弄明白了,可以发总结了
先说说普里姆,它的本质就是贪心,先从任意一个点开始,找到最短边,然后不断更新更新len数组,然后再选取最短边并标记经过的点,直到所有的点被标记,或者说已经选好了n-1条边。
克鲁斯卡尔,一个排序一个并查集只是表面,实质还是贪心,只不过普里斯是任选一个点选最短路,而克鲁斯卡尔是看全局,全体边排序,当然,因为排序,导致时间复杂度不容易降下来。
拿SDUTOJ2144为例,代码如下,可做模板...
分类:
其他好文 时间:
2014-05-25 11:10:47
阅读次数:
256
题目:输入一个递增的排序的数组和一个数字s,在数组中查找两个数,使得它们的和为s。如果有多对满足条件的则输出任意一对即可
方案一:枚举两个数求和判断,时间复杂度O(n^2),显然效率太低
方案二:枚举第一个数,二分第二个数,时间复杂度O(nlogn),效率高了很多
方案三:设置两个指针p1,p2初始化指向数组的第一个数和最后一个数(即最小值和最大值),判断两个指针指向的两个数sum和...
分类:
其他好文 时间:
2014-05-25 10:03:37
阅读次数:
186