文章分类 -  acm字符串-kmp

CodeForces 536B Tavas and Malekas :构造长为n的串,使m个串的开头是给定的某个字符串,求构造方案数 kmp/hash
摘要:本题的难点在于--->看懂题意因为比赛纠结于A的二分,比赛还没结束就暴走睡觉了TUT今天起来看了看B===卧槽题意和A一样恶心啊有木有==回到本题,看明白之后首先映入眼前的就是--->暴力大法好这样必然是可以hack超时的,必须要对串进行处理哪些后缀和前缀相等最常规的莫过于kmp里面的next,从结... 阅读全文

posted @ 2015-04-15 18:05 xiao_xin 阅读(440) 评论(0) 推荐(0)

hdu3613 扩展KMP
摘要:一个串切成两个,左边如果是回文串加上左边价值,右边如果是回文串加上右边价值,求切一次得到的最大价值扩展KMP:for (i=1;i 2 #include 3 #include 4 using namespace std; 5 int next[500005]; 6 void EKMP(char *s... 阅读全文

posted @ 2015-02-03 23:11 xiao_xin 阅读(101) 评论(0) 推荐(0)

hdu4333 扩展KMP
摘要:一次将第一个数放到最后一个,求所有不同的数中比原串小的个数,等于个数,大于个数思路:将原串贴在后面,求一遍与原串的EXKMP,然后利用extendif extend[i]>=len 等于原串else if s[i+extend[i]]>s[i] 大于原串else 小于原串然后利用KMPdenext数... 阅读全文

posted @ 2015-02-02 23:52 xiao_xin 阅读(99) 评论(0) 推荐(0)

hdu4300 扩展KMP
摘要:题意好难懂==给定26个是a-z的密文,然后将给定的字符串符合密文+对应明文的最短串输出注意到前(len+1)/2肯定是密文,然后翻译成明文与后面进行EXKMP只要extend[i]可以到达末尾即为最小,再加上后面翻译即可 1 #include 2 #include 3 #include 4 usi... 阅读全文

posted @ 2015-02-02 23:44 xiao_xin 阅读(98) 评论(0) 推荐(0)

扩展KMP模板(下标从0开始)
摘要:扩展kmp求得是:S,Tentend[i]表示S中i开始的后缀与T最长公共前缀暂时没用从1下标开始的扩展KMP,下次补坑== 1 void EKMP(char s[],char t[],int lens,int lent) 2 { 3 int i,j,p,l,a; 4 next[0]=len... 阅读全文

posted @ 2015-02-02 23:31 xiao_xin 阅读(120) 评论(0) 推荐(0)

kmp模板
摘要:来自matrix67,很好用很好理解 1 int find(char *A,char *B,int n,int m) 2 { 3 int i,j=0; 4 for (i=1;i0&&B[j+1]!=A[i]) j=next[j]; 7 if (B[j+1]==A[i]) j++; 8... 阅读全文

posted @ 2015-02-02 02:39 xiao_xin 阅读(95) 评论(0) 推荐(0)

hdu1841 kmp(用最短的串使包含存在的两个串)
摘要:1.大的包含小的,求kmp即可2.一个串的前缀是另一个串的后缀,合并利用next数组 1 #include 2 #include 3 char s1[1000005],s2[1000005],t1[1000005],t2[1000005]; 4 char s[2000005]; 5 int next... 阅读全文

posted @ 2015-02-02 02:38 xiao_xin 阅读(85) 评论(0) 推荐(0)

hdu2594 求s1前缀与s2后缀最长重合串
摘要:还是没能熟练掌握巧妙的next数组,把s2接到s1后面,求next数组当next[n]>a||next[b]>b继续求next直到为0或者不满足这两种此时next[n]值就是最大重复串 1 #include 2 #include 3 int next[100005]; 4 char s1[10000... 阅读全文

posted @ 2015-02-02 01:30 xiao_xin 阅读(144) 评论(0) 推荐(0)

hdu1358 循环超过两节的字符串(next数组)
摘要:if (i%(i-next[i])==0&&i/(i-next[i])>1)循环次方=i/(i-next[i]) 1 #include 2 #include 3 int n,next[1000005]; 4 char s[1000005]; 5 void getnext() 6 { 7 int ... 阅读全文

posted @ 2015-02-01 17:09 xiao_xin 阅读(109) 评论(0) 推荐(0)

hdu3336 dp+求next数组
摘要:dp[i]=dp[next[i]]+1;//dp[i]表示以i结尾能和前面多少前缀匹配,思考ans=sum{dp[i]} 1 #include 2 #include 3 #include 4 using namespace std; 5 int m,dp[200005],next[200005]; ... 阅读全文

posted @ 2015-02-01 16:08 xiao_xin 阅读(96) 评论(0) 推荐(0)

hdu1711 kmp
摘要:1 #include 2 #include 3 int a[1000005],b[1000005],next[100005]; 4 int main() 5 { 6 int t,i,j,n,m; 7 while (~scanf("%d",&t)) 8 while (t--)... 阅读全文

posted @ 2014-07-16 16:47 xiao_xin 阅读(82) 评论(0) 推荐(0)

导航