上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页
摘要: 题目链接:http://poj.org/problem?id=2774 两个字符串的最长公共字串。 求出height数组后直接二分答案就可以了,或者线性扫描一遍。 1 //STATUS:C++_AC_594MS_4800KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 阅读全文
posted @ 2013-04-24 19:39 zhsl 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3693 求字符串的重复次数最多的且字典序最小的字串。 很不错的题目。罗穗骞大牛论文的模板题,摘了Neo / Add ~0U>>1大牛的详细题解,如下: 首先求第一问最大重复数。从N的范围来看O(N^2)虽不靠谱,但是起码能带来些有用的启示。方法有二,一是枚举开头位置求重复长度;二是枚举重复长度求开头位置。第一种方法求最大重复数的方法MS也只有枚举重复长度然后去判……所以说我们从第二个方法入手。O(N^2)的方法是再枚举开头位置。我们来考虑一下能不能少枚举一些开头位置——更确切地说,能不能只枚举一些特殊位置,设当前枚举的 阅读全文
posted @ 2013-04-24 17:22 zhsl 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 做了几道划分树的题目,划分树的效率很高,用来求区间第K小值和区间小于K小值的和,每次动态询问的复杂度为O(logn)。其中POJ2104,POJ2761,HDU2665为典型的求区间第K小值,HDU3743还加上了求和的操作,推荐去做一做。 下面是HUD3743的代码: 1 //STATUS:C++_AC_343MS_30048KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 阅读全文
posted @ 2013-04-22 14:02 zhsl 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 盗了别人的资料。。。其实看下面的一个图片就知道划分树的结构了,和归并排序极为相似: 注意:一定要注意其中中位数有多个相同的情况,需要统计。例如,上图第一次操作,只有一个3到了左区间。下面是具体的讲解:TonyShaw 如果对于一段区间,仅查找一次第k大元素的话好说,直接一个快排搞定。 如果有多次离线询问,然后就可以通过归并排序,建一棵归并树(nlogn)对于树的每一个节点,通过归并排序递归的建立一个序列,其中每个节点[l,r]表示原序列中,[l,r]这些数字排序以后的状态。如图,红色节点表示会被分到左子树。 就这样,在区间[l,r]查找第k大元素的时候,先二分枚举元素x,求出x... 阅读全文
posted @ 2013-04-22 13:52 zhsl 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3261 求可重叠的至少出现K次的最长公共前缀。 先用后缀数组求出height数组,然后二分答案。 1 //STATUS:C++_AC_47MS_720KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #in 阅读全文
posted @ 2013-04-19 20:59 zhsl 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1743 题意:给一些数字串,当做韵律,相同的韵律必须满足: 1,最少5个数字长; 2,重复出现的时候,必须相对差值一样,比如{ 1 ,2, 3, 22, 10, 11, 12 },1,2,3与10 11 12是一样的韵律。 3,韵律不可重叠。 先用后缀数组处理,然后对height数组二分答案就好了。 1 //STATUS:C++_AC_266MS_724KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #incl 阅读全文
posted @ 2013-04-19 01:46 zhsl 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 关于后缀数组的资料,可以看NOI2009国家集训队论文罗穗骞 的<后缀数组——处理字符串的有力工具>。/* suffix array 倍增算法 O(n*lgn) build_sa( ,n+1, ) 注意n+1 getHeight( , n) n = 8 ; num[] = { 1, 1, 2, 1, 1, 1, 1, 2, $ }. 注意num数组最后一位值为0,其它位须大于0! rank[] = { 4, 6, 8, 1, 2, 3, 5, 7, 0 }. (rank[0~n-1]为有效值) sa[] = { 8, ... 阅读全文
posted @ 2013-04-19 01:40 zhsl 阅读(283) 评论(2) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3461 典型的KMP模板题,直接匹配个数即可。 1 //STATUS:C++_AC_94MS_1240KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<vector>10 #i 阅读全文
posted @ 2013-04-16 22:01 zhsl 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3630 建立一个Trie树查找就可以了,但是这里动态建立Trie居然会超时,静态化居然可以秒,太不厚道了= = 当然还可以用qsort秒过,依次比较。。。 1 //STATUS:C++_AC_110MS_2568KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 阅读全文
posted @ 2013-04-16 21:01 zhsl 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3128 题意:给定一个置换,求是否能由另一个置换平方后组成。 简单的性质,只要所给的置换中相等的偶数长度循环个数为偶数个就是可行解。 1 //STATUS:C++_AC_0MS_196KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<al 阅读全文
posted @ 2013-04-13 20:37 zhsl 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1721 置换群的分数幂运算,分数幂运算考虑的是置换的合并,但这道题简化了很多,首先注意到“Alice first writes down all the numbers from 1 to N in some random order: a1, a2, ..., aN. Then she arranges the cards so that the position ai holds the card numbered ai+1, for every 1 <= i <= N-1, while the position 阅读全文
posted @ 2013-04-13 19:28 zhsl 阅读(430) 评论(0) 推荐(1) 编辑
摘要: 题目链接:http://poj.org/problem?id=1282 终于把这道题目给A了。 先来看看特殊情况:如果p=1的话,那就很容易做了,直接求每个循环节的长度,然后再求最小公倍数就行了。但是p!=1呢?如果依葫芦画瓢,通过n个置换去找循环节,然后再去求最小公倍数,那么难点就在找循环节上,很难处理,因此考虑换一种方法。 NOI2005论文,潘震皓的<置换群快速幂运算研究与探讨>上有详细介绍,主要是对置换进行一个变化,然后去枚举答案。 1 //STATUS:C++_AC_0MS_452KB 2 #include<stdio.h> 3 #include<std 阅读全文
posted @ 2013-04-13 13:25 zhsl 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2407 欧拉函数模板题目: phi(n)=n*(1-1/p1)*(1-1/p1)*...*(1-1/pn)。 1 //STATUS:C++_AC_0MS_152KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 阅读全文
posted @ 2013-04-13 13:07 zhsl 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2891 题意:求解模线性方程组,且任意的ai可能不互质。 直接用扩展欧几里得求解就可了,具体可以看:http://www.cnblogs.com/zhsl/archive/2013/04/12/3017109.htm 1 //STATUS:C++_AC_0MS_196KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 阅读全文
posted @ 2013-04-12 17:59 zhsl 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 模线性方程组:x=a1(Mod m1) x=a2(Mod m2) ...... x=an(Mod mn) 这个问题的源自《孙子算经》,其中有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数.这样的问题,也有人称为“韩信点兵”.它形成了一类问题,也就是初等数论中解同余式.这类问题的有解条件和解的方法被称为“中国剩余定理”,这是由中国人首先提出的.首先来看一个简单的例子:① 有一个数,除以3余2,除以4... 阅读全文
posted @ 2013-04-12 17:57 zhsl 阅读(819) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页