[BZOJ3942][Usaco2015 Feb]Censoring(栈+kmp)
来源:互联网 发布:新浪微博数据冗余 编辑:程序博客网 时间:2024/04/28 23:54
题目描述
传送门
题解
首先kmp求出来失配函数,然后暴力匹配。
如果当前位可以匹配,那么将其压入栈中;如果不能匹配,蹦到它的失配开始匹配;如果有一个完整的子串被压入栈中了,暴力将这个子串弹出。
注意弹出了一个串了之后要恢复到栈顶元素之前匹配到的位置 。
这样的话最终弹出的都是合法的串,没有弹出的就是无法匹配的。
代码
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 1000005char s[N],w[N];int lw,ls,T[N],stack[N],loc[N],top;void calc_T(){ T[0]=-1; for (int i=0,j;i<lw;++i) { j=T[i]; while (j!=-1&&w[i]!=w[j]) j=T[j]; T[i+1]=++j; }}int main(){ scanf("%s",s);ls=strlen(s); scanf("%s",w);lw=strlen(w); calc_T(); for (int i=0,j=0;i<ls;++i) { while (j!=-1&&s[i]!=w[j]) j=T[j]; ++j; stack[++top]=i; loc[top]=j; if (j==lw) { for (int k=1;k<=lw;++k) --top; j=loc[top]; } } for (int i=1;i<=top;++i) putchar(s[stack[i]]);}
0 0
- [BZOJ3942][Usaco2015 Feb]Censoring(栈+kmp)
- [BZOJ3942][Usaco2015 Feb]Censoring(栈+kmp)
- [BZOJ3942][Usaco2015 Feb]Censoring(kmp)
- 【BZOJ3942】【Usaco2015 Feb】Censoring KMP
- 【bzoj3942】 [Usaco2015 Feb]Censoring KMP
- 【BZOJ3942】[Usaco2015 Feb]Censoring【AC自动机 / KMP】
- BZOJ3942&&Usaco2015 Feb[Censoring] KMP算法
- [BZOJ3942] [Usaco2015 Feb]Censoring
- 【bzoj 3942】[Usaco2015 Feb]Censoring(栈+kmp)
- bzoj 3942: [Usaco2015 Feb]Censoring (kmp)
- 3942: [Usaco2015 Feb]Censoring|Kmp
- 3942: [Usaco2015 Feb]Censoring KMP
- BZOJ 3942 Usaco2015 Feb Censoring KMP算法
- 【BZOJ3940】[Usaco2015 Feb]Censoring【AC自动机 / KMP】
- 【BZOJ 3942】 [Usaco2015 Feb]Censoring kmp
- Bzoj 3942: [Usaco2015 Feb]Censoring(kmp)
- bzoj 3942: [Usaco2015 Feb]Censoring kmp算法
- BZOJ 3942: [Usaco2015 Feb]Censoring KMP
- 作者找不到了,但是非常感谢作者(编码)
- nyoj915 +-字符串(贪心)
- GOP之M和N值介绍
- 【UVa658】【SPFA】【状态压缩】It's not a Bug,it's a Featurel.
- 《大话设计模式》-- 第26个 享元模式
- [BZOJ3942][Usaco2015 Feb]Censoring(栈+kmp)
- 键盘键值对应表
- 后台劳动者--探究服务
- CSS基础04- 优先级和display属性
- fine turning微调网络
- 采用OpenReplicator解析MySQL binlog
- 使用最新版wampserver搭建 WAMP 平台超简单实用教程
- 再看lua协同程序的lua_yield、coroutine.yield、和lua_resume的应用
- 杭电acm1014