首页 > TAG信息列表 > USACO15FEB

P4824 [USACO15FEB]Censoring S 题解

题面 本来就是个裸的KMP,但是这个题是有删除的,所以可以维护一个栈,每次的 \(j\) 都继承栈顶元素的 \(j\),然后如果找到了一个匹配,就直接弹栈即可。因为只会进栈 \(O(n)\) 次,所以总复杂度也是 \(O(n)\) 的。这个题算是栈的妙用了。 点击查看代码 #include<iostream> #include<cstdio>

【P4824 [USACO15FEB]Censoring S】题解

题目 Farmer John为他的奶牛们订阅了Good Hooveskeeping杂志,因此他们在谷仓等待挤奶期间,可以有足够的文章可供阅读。不幸的是,最新一期的文章包含一篇关于如何烹制完美牛排的不恰当的文章,FJ不愿让他的奶牛们看到这些内容。 FJ已经根据杂志的所有文字,创建了一个字符串 \(S\) ( \(S

2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机)

2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机) https://www.luogu.com.cn/problem/P4824 题意: 给定字符串S和T,删除S中的T,形成新串,继续删除新串中的T,直至完全删除。 分析: KMP求的是当前S的第i位能匹配到T的第j位,如果j==strlen(T)删除stac

P3121 [USACO15FEB]Censoring G

Jisoo 不知道该怎么做? 匹配,开个栈并记录。删掉一个单词以后就从上一个单词的位置继续匹配。 为什么匹配过程不跳 fail?因为题目保证没有单词是另外一个单词的字串。 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<stack> #i

P3120 [USACO15FEB]Cow Hopscotch G 题解

题目链接 P3120 [USACO15FEB]Cow Hopscotch G solve 读完题目我们很容易写出一个 \(O(n^4)\) 的方程 \[F[i][j]=\sum F[i'][j'] \]这个柿子可以通过三维偏序来优化,但是我往另外一个方向走了 如果颜色数很少的话,就可以用一个数组 \(sum[i][j][k]\) 表示第 \(k\) 个颜色在 \(i,j\)

P4824 [USACO15FEB]Censoring S

Lisa 很水的kmp小题 思考一下就可以知道,肯定要跑kmp,但是当我们删掉一个串后剩下怎么办 答:从上一次的位置接着匹配 记录一下这个东西就行了 #include<iostream> #include<cstring> #include<iostream> using namespace std; char a[1000100],b[1000100]; int ne[1000100]; int f[