
字符串
zhouyuyang233
此乃ZJ之蒟蒻也
望大牛勿喷
我等蒟蒻感激不尽
展开
-
bzoj3670: [Noi2014]动物园
传送门 裸的kmp,只要next[i]*2<=i即可,要记录可行解方案数。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<cstdlib>#define M 1000005using namespace std;char s[M];int T原创 2017-03-14 09:56:49 · 309 阅读 · 0 评论 -
bzoj1819: [JSOI]Word Query电子字典
传送门 大力建出Trie之后转移。 也就是三种情况:跳过该字符。跳过该Trie数节点,向兄弟节点跳。 注意一个字符串可能有多种方法和字典中字符串匹配。#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<iostream>#include<algorithm>#define N 20000原创 2017-06-20 21:48:18 · 368 阅读 · 0 评论 -
bzoj1511: [POI2006]OKR-Periods of Words
传送门 直接求一下next,之后把所有的next向前找到最后一个非零地方的next。 然后扫一遍对于每个next非零位置的周期来说就是i-new_next[i] 还是之前的那个性质,n-next[i]是最小循环周期,推一下就变成最长了。 #include<cmath>#include<cstdio>#include<cstring>#include<cstdlib>#include原创 2017-05-31 17:43:13 · 391 阅读 · 0 评论 -
bzoj1100: [POI2007]对称轴osi
传送门 一看到几何题就蛋疼系列 然后看到了100w的巨大数据。 然后我怂了,去看了题解,才知道,这么一道像极了几何的题目竟然使用字符串的方法来解决的。瞬间orz膜倒在地。 这个思路:把这个图形写成一个字符串的形式S,然后复制一遍SS,再用它的反串S’跑一边,看看能够匹配多少次。答案就是多少了。 觉得直接跑一边manacher更合适,统计起来更简单。#include<cmath>#incl原创 2017-05-06 21:43:37 · 846 阅读 · 0 评论 -
bzoj1444: [Jsoi2009]有趣的游戏
传送门 首先得到AC自动机。 然后得到转移矩阵。 我们可以将矩阵自乘50次,假装他是对的。 然后就这样被水过去了#include<cstdio>#include<cstdlib>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#define N 505using namespace std原创 2017-04-30 21:00:46 · 430 阅读 · 0 评论 -
51nod 1526 分配笔名
传送门 trie树。 首先建立trie树,如果是名字,打标记+1,如果是笔名,打标记-1 然后做贪心爆搜,如果当前节点标记之和与儿子节点标记之和不同,则贪心选择min乘上depth,答案一定是最优的。 数据有一组要深搜80万层,要加特判。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#inc原创 2017-03-14 13:14:55 · 671 阅读 · 6 评论 -
51nod 1277 字符串中的最大值
传送门 又是一道kmp模板题。 运用next数组,我们可以得到一个前缀的最长border 这样串A整个串里出现的次数就是以串A为border的前缀个数。 而可以通过next数组转移到A的都以串A为border 所以我们倒推退出个数,取max即可。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>原创 2017-03-14 11:29:35 · 664 阅读 · 0 评论 -
codevs 1204 寻找子串位置
传送门 kmp模板题。 话说这么小的数据还要用kmp吗?#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<cstdlib>using namespace std;char a[105],b[105];int l1,l2,nxt[105],t;原创 2017-03-14 11:19:02 · 367 阅读 · 0 评论 -
bzoj1954: Pku3764 The xor-longest Path
传送门 首先假设1为根,求出根到当前节点的xor距离。 然后将xor距离转化为二进制串,建立Trie树。 强制一些点在答案上,然后在Trie树上跑贪心。 显然答案是正确的。 时间复杂度O(n*32)#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#includ原创 2017-03-14 11:06:03 · 448 阅读 · 3 评论 -
bzoj2081: [Poi2010]Beads
传送门 哈希被卡了。孟戴章峥 直接暴力+哈希驶过去,但是模数要取好。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<cstdlib>#define bas 200019#define mo 1000000009#define ll long原创 2017-03-14 10:31:59 · 366 阅读 · 0 评论 -
bzoj1355: [Baltic2009]Radio Transmission
传送门 根据鏼爷在WC2017的理论,答案为n-nxt[n]. 裸的kmp++#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<cstdlib>#define M 1000005using namespace std;char s[M];in原创 2017-03-14 10:04:19 · 365 阅读 · 0 评论 -
bzoj1461: 字符串的匹配
传送门 首先我们记录B串中每个元素的排名信息 我记录了在他前面的比他小的数和相等的数的个数。 然后大力kmp(看毛片) 每一次跳next的术后记得删除无用元素。 因为加入是O(N)级别的 所以删除也是O(N)级别的。 然后大力kmp(再看毛片) 同样道理我们每一次跳next的术后记得删除无用元素。 为啥删除也是O(N)的也同上。 时间复杂度O(NlogN)“`includeinc原创 2017-07-02 21:34:59 · 586 阅读 · 0 评论