上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页
摘要: 题意:若一个串t是A的子串且t不包含B,称t为A的合法子串。求A不同的合法子串的个数。思路:这道题的母题:给定一个字符串,求不相同的子串的个数(spoj694,spoj705),先讲一下这个母题:算法分析:每个子串一定是某个后缀的前缀,那么原问题等价与求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffix(sa[2]),suffix(sa[3])…suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有height[k]个是和前面的字符串的前缀是相同的。所以suf 阅读全文
posted @ 2013-03-26 21:35 _sunshine 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 感觉这道题用并查集用的挺巧妙的~链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1041题意:1,2,3,4,5,6……n块巧克力(不超过10^6),m次询问,每次询问问(a,b)之间还有几个巧克力,有几个吃掉几个。例如样例:sample intput6 41 24 41 31 4sample output2110View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include <iost 阅读全文
posted @ 2013-03-26 21:22 _sunshine 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 纪念一下第五场腾讯马拉松进了前300,没进复赛,你懂得~AC率不到2%的原因竟然是double,怕溢出用long long,__int64都是WA~变成double就AC了~View Code 1 #include<stdio.h> 2 #include<string.h> 3 #include <iostream> 4 #include <cstring> 5 #include <math.h> 6 using namespace std; 7 int main(){ 8 int T,n; 9 double k1,k2,k,a,su 阅读全文
posted @ 2013-03-26 21:02 _sunshine 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 连续数列Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte Total Submit:223 Accepted:62 Description给你P个数字1,2,3,...,P你可以把这些数字组成长度为L的数字串但是这个串不能出现有连续K个或者K个以上的数字1。(1<=P<=9 1<L<=30 1<K<=L)比如,P=2 L=3 K=2有如下情况1 2 11 2 22 1 22 2 12 2 2共有5种再比如 P=3 L=3 K=3有如下情况1 1 2 2 1 1 3 1 11 1 3 2 阅读全文
posted @ 2013-03-05 21:35 _sunshine 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 看了看《迭代求解的利器--------SPFA算法的优化与应用》(广东中山纪念中学 姜碧野)讲到了spfa的dfs版本以及各种优化,很详细~感觉这是个不错的题,以下是摘要,感觉作者写的太好了,没什么补充的了:题意:我们有n个(n<=100000)字符串,每个字符串都是由a~z的小写英文字母组成的字符串。如果字符串A的结尾两个字符刚好与字符串B的开头两字符相匹配,那么我们称A与B能相连(注意:A能与B相连不代表B能与A相连)。我们希望从给定的字符串中找出一些,使得他们首尾相接形成一个环串(一个串首尾相连也算)。我们想要使这个环串的平均长度最长。比如下例:ababcbckjacacaahoy 阅读全文
posted @ 2013-02-28 21:42 _sunshine 阅读(1381) 评论(1) 推荐(1) 编辑
摘要: 这样的未知数组成的不等式组叫做差分约束系统,要么无解,要么无数组解(一组解加上或减去一个数字不等式依旧成立)。差分约束系统的求解利用单源最短路中的三角形不等式,对于有向网中的任何一条边满足d[v]<=d[u]+edge[u][v];其中d[u],d[v]分别是从源点分别到顶点u和v的最短路径。构造方法:①每个不等式中的每个未知数Xi对应图中的一个顶点Vi;②把所有不等式都化成图中的一条边,对于不等式Xi-Xj<=c,即Xi<=c+Xj,就可以化成<Vi,Vj>,权值为c。最后在这个图中求一次单源最短路,这些三角形不等式就都满足了。增加一个源点,自己设一个,以上不等 阅读全文
posted @ 2013-02-27 21:35 _sunshine 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。Hash函数数据1数据2数据3数据4数据1得分数据2得分数据3得分数据4得分平均分BKDRHash20477448196.5510090.9582.0592.64APHash23475 阅读全文
posted @ 2013-02-26 20:27 _sunshine 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 原创:http://www.cnblogs.com/hibernate6/archive/2011/02/12/2522331.html几个最短路径算法的比较:Floyd求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。 Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。Floyd-Warshall算法的时间复杂度为O(N^3),空间复杂度为O(N^2)。 Floyd-Warshall的原理是动态规划: 设Di,j,k为从i到j的只以(1..k)集合中的节点 阅读全文
posted @ 2013-02-25 20:17 _sunshine 阅读(1698) 评论(0) 推荐(2) 编辑
摘要: Bellman-ford算法的递推公式应该改为(求源点v0到各顶点v的最短路径):初始:dist(0)[v]=inf,dist(0)[v0]=0,v0是源点,v≠v0递推:对每条边(u,v),dist(k)[v]=min{dist(k-1)[v],dist(k-1)[v]+w(u,v)};k=1,2,3...View Code 1 void bellman(int v0){ 2 int i,k; 3 for(i=0;i<n;i++){ 4 dist[i]=inf; 5 path[i]=-1; 6 } 7 dist[v0]=0; ... 阅读全文
posted @ 2013-02-25 17:13 _sunshine 阅读(366) 评论(2) 推荐(1) 编辑
摘要: 原创:http://blog.chinaunix.net/uid-1844931-id-3337784.html前几天在论坛上看到有统计说有80%的程序员不能够写对简单的二分法。二分法不是很简单的吗? 这难道不是耸人听闻?其实,二分法真的不那么简单,尤其是二分法的各个变种。 最最简单的二分法,就是从一个排好序的数组之查找一个key值。 如下面的程序: 1 int search(int *arr, int n, int key){ 2 int left=0, right=n-1; 3 //首先要把握下面几个要点: 4 //right=n-1 => while(lef... 阅读全文
posted @ 2013-02-15 23:38 _sunshine 阅读(387) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页