数据结构
文章平均质量分 80
cwcactus
这个作者很懒,什么都没留下…
展开
-
poj 2528 Mayor's posters
题目链接:http://poj.org/problem?id=2528题目大意:求最终有多少张海报可见。题目思路:最近想写一下矩形切割,当然,对于这道题不是很适合,不过可以过。#include#include#include#include#include#include#include#include#include#include#include#includ原创 2012-09-21 09:34:48 · 1099 阅读 · 0 评论 -
poj 3581 Sequence
题目链接:http://poj.org/problem?id=3581题目大意:求将一个串分成三段再反转后字典序最小。题目思路:由于题目中说第一个数最大,所以第一切点只要找到最小后缀就可以了,对于剩下的部分,我想到的办法很麻烦,还要求最长公共前缀,分三段比较。网上的方法是将剩余串增倍,因为其实反转后两个串构成一个循环,用加倍的方法可以避免讨论,这样就可以直接用rank比较了。方法一:原创 2012-08-14 16:33:57 · 488 阅读 · 0 评论 -
poj 3261 Milk Patterns
题目链接:http://poj.org/problem?id=3261题目思路:后缀数组,求可重叠的重复k次子串。#include#include#include#include#include#include#include#include#include//#include#includeusing namespace std;#define inf 0x3f3原创 2012-07-28 17:04:42 · 409 阅读 · 0 评论 -
poj 1743 Musical Theme
题目链接:http://poj.org/problem?id=1743题目思路:后缀数组求最长不重叠重复子串#include#include#include#include#include#include#include#include#include//#include#include#define M 1000010using namespace std;#d原创 2012-07-28 16:59:18 · 672 阅读 · 0 评论 -
spoj 687. Repeats
题目链接:http://www.spoj.pl/problems/REPEATS/题目思路:后缀数组求重复次数最多的连续重复子串,借用别人的思路写的。#include#include#include#include#include#include#include#include#include//#include#includeusing namespace std;原创 2012-07-29 12:45:06 · 620 阅读 · 0 评论 -
spoj 705. New Distinct Substrings
题目链接:http://www.spoj.pl/problems/SUBST1/题目思路:直接求反面,容易发现不同子串个数,是总个数减去所有height[i]的和。#include#include#include#include#include#include#include#include#include//#include#includeusing namespa原创 2012-07-28 19:53:38 · 632 阅读 · 0 评论 -
poj 2774 Long Long Message
题目链接:http://poj.org/problem?id=2774题目思路:求最长公共子串,我们可以将两个串接起来,中间用一个特殊字符隔开,然后要求的就是求含特殊字符的后缀和不含特殊字符的两种后缀的最长公共前缀,由最长公共前缀的求法,我们可以知道任意两个不同种类的后缀一定会经过经过一个边界,即两种后缀的交界,这对应了一个height值,分析可得所有处在边界上的height值的最大值即为所求原创 2012-07-29 20:19:04 · 408 阅读 · 0 评论 -
poj 3693 Maximum repetition substring
题目链接:http://poj.org/problem?id=3693题目思路:这个题目和前面那个题目的本质是一样的,只是要求最小字典序,由于一个解中对应几个可行串,所以要暴力查找,最坏复杂度很高,由于数据水,还是勉强过了。还有一种最小字典序的处理方法,那就是在第一步中记录能够达到最大重复数的重复长度的集合,然后按照sa[1],sa[2],sa[3],……的顺序去暴力枚举,每到一个位置就从原创 2012-07-29 14:31:27 · 675 阅读 · 0 评论 -
poj 3974 Palindrome
题目链接:http://poj.org/problem?id=3974题目思路:求最长回文子串。这个题目数据太水了,网上我找到了两个错误方法,个人觉得这个题不适合用后缀数组,后缀数组里面要用到RMQ,而这样会超内存。网上看到了一种O(n)的算法,叫做Manacher,比较好理解,而且编程也简单,就学习了一下。#include#include#include#include#incl原创 2012-07-28 17:13:39 · 499 阅读 · 0 评论 -
hdu 4323 Magic Number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4323题目大意,求一个字典中,与询问串的最小编辑距离小于等于d的个数。题目思路:dp很容易想,比赛的时候由于以为会超时,一直不敢写,结果直接暴力就可以过。。题解上说可用BK-tree优化,结果优化结果很不理想,和暴力差不多。。#include#include#include#inclu原创 2012-08-13 21:23:51 · 718 阅读 · 0 评论 -
hdu 4343 Interval query
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4343题目大意:求区间最多有多少不相交线段。题目思路:先用倍增思想求出dp[i][j]表示左端点为j的线段个数为1#include#include#include#include#include#include#include#include#include#include原创 2012-08-11 21:02:15 · 953 阅读 · 0 评论 -
hdu 4345 Permutation
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4345题目大意:求长度为n的数列的置换的循环节的长度的种数。题目思路:以下摘自题解: 循环节的长度为各独立置换环长度的最小公倍数。问题即求相加和为N的正整数的最小公倍数的可能数。由于1不影响最小公倍数,问题转化为相加小于等于N的若干正整数的最小公倍数的可能数。如果这些正整数包含大原创 2012-08-09 19:05:04 · 941 阅读 · 0 评论 -
hdu 4348 To the moon
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4348题目大意:支持区间求和,成段更新和回到历史版本,访问历史版本。题目思路:我用的解题报告的离线方法,在线方法不会。。(以下摘自解题报告)在线方法:1. 带标记的主席树(利用路径指针实现的函数式的线段树。。。。可以实现 O(1) 的回档。。和 O(logN) 的询问。。(但是对内存要原创 2012-08-09 18:54:38 · 1017 阅读 · 0 评论 -
zoj 3494 BCD Code
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4317题目大意:求a到b之间的数满足翻译成bcd码后没有禁止串的个数。题目思路:ac自动机加按位dp,需要注意的是,一般在a的长度比b短时,我们会进行加零处理,这样由于0是不存在的,匹配的时候前导0也不能进行匹配,需要特殊判断一下。#include#inc原创 2012-08-08 10:16:58 · 660 阅读 · 0 评论 -
zoj 3395 Stammering Aliens
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3971题目大意:求重复次数不小于k次的最长子串(可覆盖),并输出最右边出现的位置。题目思路:后缀数组加二分答案。注意k为1的情况。#include#include#include#include#include#include#include#原创 2012-08-14 20:28:02 · 618 阅读 · 0 评论 -
hdu 3518 Boring counting
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3518题目大意:求重复次数大于等于2的不覆盖的子串个数。题目思路:这个题比较好,我的做法是直接从1到n检查height数组,如果比height[i-1]小,说明前面有一部分子串不能在后而找到相同的子串了,处理之。。这个过程中要维护两个数组,以便检查是否合法。#include#include原创 2012-08-14 22:25:38 · 663 阅读 · 0 评论 -
poj 3277 City Horizon
题目链接:http://poj.org/problem?id=3277题目大意:矩形面积并。题目思路:矩形切割。#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define原创 2012-09-21 12:43:22 · 866 阅读 · 0 评论 -
zoj 2301 Color the Ball
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2301题目大意:求最长连续白色球。题目思路:矩形切割,最长排序即可。#include#include#include#include#include#include#include#include#include#include#原创 2012-09-21 21:19:58 · 1003 阅读 · 0 评论 -
hdu 3634 City Planning
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3634题目大意:有一些矩形,这些矩形有单位权值,求一种覆盖方式,得最大权值,后面的矩形会覆盖前面的矩形。题目思路:矩形切割,这个题很适合用矩形切割,矩形很少,复杂度不高。#include#include#include#include#include#include#includ原创 2012-09-21 14:31:21 · 746 阅读 · 0 评论 -
poj 1151 Atlantis
题目链接:http://poj.org/problem?id=1151题目大意:矩形面积并。题目思路:矩形切割。#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define原创 2012-09-21 13:20:47 · 601 阅读 · 0 评论 -
hdu 2665 Kth number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2665题目思路:划分数求第k小数。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define inf原创 2012-08-06 14:29:52 · 581 阅读 · 0 评论 -
poj 2104 K-th Number
题目链接:http://poj.org/problem?id=2104题目思路:划分树求区间第k小数。说明:划分树实现有问题,这个程序只适合每个元素不相同的情况,poj的数据弱了,做了下一题才发现有问题。#include#include#include#include#include#include#include#include#include#include#i原创 2012-08-06 10:35:05 · 1334 阅读 · 0 评论 -
fzu 1608 Huge Mission
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1608题目大意:给出若干区间的效率,求总区间的效率最大和。题目思路:本来想用一般的延迟操作来做,结果超时,看到网上有一种方法,直接插入区间,最后询问时更新到点,就可以了。#include#include#include#include#include#include#include#i原创 2012-08-20 10:18:23 · 579 阅读 · 0 评论 -
poj 2892 Tunnel Warfare
题目链接:http://poj.org/problem?id=2892题目大意:求与一个点连通的点数,即包含x的区间连续为1的长度。题目思路:我的做法是直接查(1,x)的右连续(大于0)+(x+1)的左连续,还有一种做法是直接查连续长度,需要讨论点在区间的位置。#include#include#include#include#include#include#include原创 2012-08-18 20:18:30 · 550 阅读 · 0 评论 -
foj 2075 Substring
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2075题目大意:求恰好出现n次的字典序最小的串。题目思路:后缀数组加单调栈,n为1的时候要特判,不过数据有点水,不判都能过。#include#include#include#include#include#include#include#include#include#includ原创 2012-08-18 09:16:11 · 736 阅读 · 0 评论 -
hdu 4366 Successor
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4366题目大意:求一个结点的子树中能力值大于它且忠诚值最大的结点是哪个。题目思路:线段树,按能力值由大到小加入线段树,能力值相同时先加id小的,这样能保证不会有能力值和父亲相同的儿子加到父亲前面,这样每次查询就能得到答案,由于忠诚值不同,可以进行hash或用map。话说数据好水啊,错误代码都能过原创 2012-08-16 22:01:07 · 911 阅读 · 0 评论 -
hdu 2328 Corporate Identity
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2328题目大意:求多串的最长公共子串,并输出字典序最小。题目思路:后缀数组,二分答案。#include#include#include#include#include#include#include#include#include#include#includeusin原创 2012-08-15 10:47:44 · 715 阅读 · 0 评论 -
poj 3294 Life Forms
题目链接:http://poj.org/problem?id=3294题目思路:二分答案,然后分组,记录每组中不同串的个数,开始想复杂了,居然第次都去清空flag数组,后来用另一个数组去记录标记了的串的类型才把复杂度降下来,还有另一种记录方法就是flag数组里存储出现在哪个组里,这样就不用清空了,话说自己太傻逼了,居然还用排序来保证字典序,其实本来就是按字典序加的,本人太挫了。。还有就是可以预原创 2012-07-30 19:50:23 · 728 阅读 · 0 评论 -
spoj 220. Relevant Phrases of Annihilation
题目链接:http://www.spoj.pl/problems/PHRASES/题目思路:二分答案,然后分组,看一组中是否包含所有字符串,且每个字符串出现两次及两次以上,然后距离差大于等于k。#include#include#include#include#include#include#include#include#include#include#include原创 2012-07-30 21:16:18 · 582 阅读 · 0 评论 -
某高中oj b179: 空罐 Cans
题目链接:http://zerojudge.tw/ShowProblem?problemid=b179题目大意:一个基因可以分裂出四个子基因,这四个基因末尾增加a,b,c,或d,但本身的第一个碱基会失去,当基因长度为0时会死去,同时当基因含有制病片段时就会生病,问p天后有好多死去,好多生病。题目思路:ac自动机dp,dp[i][j][k]表示第i天在结点k有多少长度为j的基因。对于基因变短原创 2012-08-07 14:45:52 · 734 阅读 · 0 评论 -
poj 3415 Common Substrings
题目链接:http://poj.org/problem?id=3415题目思路:求长度不小于k的公共子串的个数,做法是维护一个单调栈,详见论文。#include#include#include#include#include#include#include#include#include//#include#includeusing namespace std;#d原创 2012-07-30 10:59:27 · 826 阅读 · 0 评论 -
hdu 3341 Lost's revenge
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3341题目大意:给出一些病毒串,一个原串,问怎么调整原串的顺序使得跟最多的病毒串匹配。题目思路:用dp[a][b][c][d][e]表示分别用了a,b,c,d个碱基,到达e结点的最值。开始加了一个总长度,后来想到既然有总长度,则有一维可以去,但是还是超时,哎,居然没有想到不用总长度直接用4种碱基原创 2012-08-07 09:17:58 · 1271 阅读 · 0 评论 -
hdu 3436 Queue-jumpers
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3436题目思路:splay,也可以用线段树或树状数组,主要难点在离散化,这个离散化是把点和点这间的区间都离散化,离散化后的点要保存原来区间的长度和起始点等信息,这样就可用splay模拟了,top操作可以先删点再插入,也可以将要删的点伸展到根结点,然后将它的左子树接到它后继的左边,这样它便成为整棵树最原创 2012-07-14 22:56:31 · 1098 阅读 · 0 评论 -
hdu 1089 Robotic Sort
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1890题目思路:splay,区间反转。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define i原创 2012-07-13 10:29:01 · 843 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers
题目链接:http://poj.org/problem?id=3468题目思路:splay,成段更新,求和。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define inf 0x3f3f3f3f原创 2012-07-12 16:52:38 · 446 阅读 · 0 评论 -
HNOI2002 营业额统计
题目思路:splay,用到了查找树内某结点的前驱,后继和插入操作。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define inf 0x3f3f3f3f#define Max 40000int原创 2012-07-11 11:00:16 · 616 阅读 · 0 评论 -
[HNOI2004]宠物收养所
题目思路:splay,主要用到找某个数(不一定在树中)的前驱,后继,和插入,删除。#include#include#include#define mod 1000000using namespace std;#define inf 0x3f3f3f3f#define Max 84000int max(int a,int b){ return a>b?a:b;}int mi原创 2012-07-11 10:57:04 · 761 阅读 · 0 评论 -
nkoj 1248: 郁闷的出纳员
题目链接:http://acm.nankai.edu.cn/p1248.html题目思路:splay,需要用到up函数。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define inf 0x3f原创 2012-07-11 10:50:15 · 472 阅读 · 0 评论 -
zoj 3430 Detect the Virus
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4114题目大意及思路:ac自动机,不过要先解码,需要注意的是这里有256种字符,需要用无符号字符型,而且0也不能作为字符串的结束标志了。#include#include#include#include#include#include#include原创 2012-05-23 20:10:57 · 745 阅读 · 0 评论 -
hdu 3065 病毒侵袭持续中
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065题目大意及思路:ac自动机。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define inf原创 2012-05-22 20:33:30 · 480 阅读 · 0 评论