--------【数据结构】
文章平均质量分 70
liuyanfeier
acmer
展开
-
CUGOJ 1681 求解最长回文字符串
Manacher算法:求解最长回文字符串,时间复杂度为O(N)这一个题目因为对于所有的数据,满足1,字符串长度字符串的长度很长,不能使用我们平时使用的类似于dp的开两维数组的解法,所以我们只有一种专门来求解这一类问题的解法,Manacher算法:求解最长回文字符串,时间复杂度为O(N)。#include #include #include #include #inclu原创 2016-05-09 15:55:54 · 425 阅读 · 0 评论 -
hdu5672 找字符串的子串问题
题目:给一个字符串,问有多少个子串至少含有k个不同的字母?有一个明显的性质:如果子串(i,j)包含了至少m个不同的字符,那么子串(i,k),(j因此对于每一个左边界,只要找到最小的满足条件的右边界,就能在O(1)时间内统计完所有以这个左边界开始的符合条件的子串。寻找这个右边界,是经典的追赶法(尺取法,双指针法)问题。维护两个指针(数组下标),轮流更新左右边界,同时累加答案即可。原创 2016-04-28 16:49:11 · 639 阅读 · 0 评论 -
Hdu5441 2015长春赛区网络赛
题目大意:有n个城市,城市之间有m条道路,每条道路用时为t。有q次询问,每次询问在时间T内可以在多少对城市之间走动。注意(a,b)和(b,a)算两种方案。 题目分析:我们可以知道,如果n个城市之间相互联通,那么方案数一共有n*(n-1)个,所以现在我们要求的就是在T范围内有多少城市相互联通以及有多少组。想到用并查集来做,并查集刚好可以计算出联通分量的个数以及每个连通分量的个数。 假原创 2015-09-16 21:34:47 · 535 阅读 · 0 评论 -
去除重复字符并排序
/*putchar函数的基本格式为:putchar(c)。(1)当c为一个被单引号(英文状态下)引起来的字符时,输出该字符(注:该字符也可为转义字符);(2)当c为一个介于0~127(包括0及127)之间的十进制整型数时,它会被视为对应字符的ASCII代码,输出该ASCII代码对应的字符;(3)当c为一个事先用char定义好的字符型变量时,输出该变量所指向的字符。*/#inc原创 2015-08-27 15:45:51 · 686 阅读 · 0 评论 -
数据结构之并查集(Union-Find)
叫做并查集的主要原因是该数据结构的主要操作是:1:合并区间(union)2:查找元素所属区间(find)所以叫做并查集 如果给出各个元素之间的联系,要求将这些元素分成几个集合,每个集合中的元素直接或间接有联系。在这类问题中主要涉及的是对集合的合并和查找,因此将这种集合称为并查集。 问题:若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,给出某个亲戚关系图,求原创 2015-08-15 11:14:04 · 718 阅读 · 0 评论 -
线段树区间更新
线段树成段更新延迟标记理解区间更新是指每次更新的时候更新的是一个区间里面的所有值,例如将区间[l,r]内的所有点都加或者减去一个数,或者替换成一个数字等等.因为区间更新每次更新的不止一个叶子节点,而叶子节点的值的更新肯定会影响到他的一系列的节点,所以假如每次都按照单点更新的思路将每一个叶子节点以及他的父节点都更新的话,那么工作量太大了并且时间肯定不会是log(n)会超时的。例如线段树总区间为[1,原创 2015-08-12 15:58:39 · 945 阅读 · 0 评论