
KMP
hrbust_wgq
当我们理解了一个东西的时候,所应该做的,是将这个东西放下去,好让更多的人明白和掌握;而不是举起来,以一种高姿态故作高深。这不是科学文化发展和传播的正道。有时候,所谓的“一言以蔽之”,不经意间,就“蔽”掉了求知者的热情和渴望,同时也就“蔽”掉了科学文化的健康传承。
把问题说清楚,尽可能让更多的人明白,是博客的宗旨。直达本质,直达底层,去术语化,用最通俗、最平易的语言和讲解方式说清“到底是什么”、“原来是这样”,是要努力的方向。
展开
-
codeforces 432D 【kmp+dp】||【后缀数组】
codeforces 432D 【kmp+dp】||【后缀数组】Description:给出一个字符串,求有多少种长度的前缀和后缀相等,并且得到的这个前缀在原字符串中出现的次数。 solution1:kmp+dp 求前缀出现的次数,原来就写过: https://blog.youkuaiyun.com/qq_43653111/article/details/103354633 现在找一下前缀后缀相等:很容易发现n,nxt[n]就是一个 再找找nxt[nxt[n]]也是,gg了 scanf("%s原创 2020-06-10 16:37:19 · 239 阅读 · 0 评论 -
HDU 3336【前缀出现次数】dp+kmp
HDU 3336【前缀出现次数】dp+kmp 题意:求出字符串前缀出现的总次数,答案对1e4+7取模; 思路:我们先考虑kmp匹配前缀与自身,可惜是O(n*n)的复杂度,那么我们该怎样匹配呢?对于这样一个串, 我们可以很容易发现这样一件事cnt[s1]=cnt[s2]=cnt[s3]+1;我们初始化cnt[i]=1;然后从后往前累加cnt[nxt[i]]+=cnt[i],每出现一次长串,就...原创 2019-12-02 19:18:46 · 343 阅读 · 0 评论 -
HDU 3374
LG [3879]题意:给你一篇文章(n行),给你m个单词,问你每一行单词出现在哪一行?(有多行出现也输出)思路:据说不卡STL,也很好写:STL今天要说的是trie树;很明显:我们考虑用字典树去存每一行的单词,开个二维字典树?那内存1000* 1000*26,能开下但显然不够啊,那不开二维字典树,怎么标记哪一行呢?用二维bool数组标记字符串最后一个id,就是tried[pos].son[...原创 2019-10-16 21:56:15 · 163 阅读 · 0 评论 -
KMP&&E-KMP总结(kuangbin)
kmp:next数组:子串的前缀和后缀最大长度,也就是子串后缀与子串的最大匹配长度。kuangbin模板上的kmp_pre求next数组优化版,部分next[i]=-1,可能会在有些题目上出错,慎用.周期串:(i%(i-next[i])==0)最小周期(i-next[i]),循环节(i/(i-next[i]));前缀在原串中出现的次数dp[i]=dp[NEXT[i]]+1;第i个字符结尾...原创 2019-10-08 15:52:18 · 228 阅读 · 0 评论