
字符串处理
文章平均质量分 75
nash142857
这个作者很懒,什么都没留下…
展开
-
ZOJ1905
/*这道题目是个基础kmp匹配的题目 利用next数组记录最大自身匹配值,那么l-next[l]表示就是可以的最小重叠子串,如果l被l-next[l]整除则输出商,否则输出1*/#include#includechar s[1000010];int l,next[1000010];int kmp(){ l=strlen(s+1); next[1]=0; int k=0; fo原创 2012-08-22 23:16:03 · 571 阅读 · 0 评论 -
poj 1229
这道题目觉得很经典,果断不会做,看了别人博客来了感觉才搞定的,是到模糊匹配的题目,核心就是把给的三种替代字符,用另外三种替代,一个是必须匹配一个,一个是任意匹配,0到无限,一个是0或1匹配,然后利用背包就可以搞定然后把字符串利用map映射为数字,三种替代为-1,-2,-3;dp[i][j]表示第一个字符串到i位,第二个字符串到j位能否匹配,自底而上更新即可。#include#in原创 2012-08-24 01:55:51 · 1002 阅读 · 0 评论 -
poj2185
/*kmp的一道好题,ZOJ1905题的一道升华。这道题目的核心就在于,先行匹配,取最小公倍数,再列匹配,取最小公倍数,两个一乘就是area。这题有句话很重要,Note that the dimensions of the small rectangular unit do not necessarily need to divide evenly the dimensions of th原创 2012-08-23 17:29:00 · 1943 阅读 · 1 评论 -
字符串练习
poj pku字符串题目推荐及解题报告POJ 1002 - 487-3279(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=1002题意:略解法:二叉查找数,map,快排...POJ 1200 - Crazy Search(基础)http://acm.pku.edu.cn/JudgeOnline/转载 2012-08-23 10:06:23 · 1015 阅读 · 0 评论 -
hdu3374最大最小表示+kmp
#include#include#define maxn 1000010char s[2*maxn];int nxt[2*maxn];int len;int get(int flag){ int i=1,j=2,k=0; while(i<=len&&j<=len&&k<=len) { int m=s[i+k]-s[j+k]; if(!m) k++; else原创 2012-08-28 14:42:12 · 488 阅读 · 0 评论 -
后缀数组+RMQpoj3693
大概的思想就是对于一个重复长度为l的串,对于下表0,l,2*l,3*l。。。存在相邻两个数使得r[i]==r[j],这样对于i,j匹配得到的最长公共前缀得出重复次数z/l+1,但如果不整除的话,i和j要前移l-z%l,原因很明显,画个图就ok了,然后对于字典序,只需要外层枚举sa数组的下表,内层枚举所有使得有maxnumber的重复长度L,看是否满足,满足就输出然后break即可#incl原创 2012-11-04 13:36:02 · 2127 阅读 · 0 评论