洛谷P4824 [USACO15FEB] Censoring S 题解

题目链接:P4824 [USACO15FEB] Censoring S

题意:给出字符串 ttt 和 sss ,删除在 ttt 中第一次出现的子串 sss ,并重复这个过程(在产生的新串 t’t’t’ 上继续删除操作),求最后的结果

匹配问题可以用KMP来解决

怎么处理删除操作呢?

可以观察下样例

注意到删除子串后,在删除的子段后继续匹配可能需要该子段前的已经算出(显然)的匹配值

那么我们可以用两个栈分别维护KMP的匹配值和答案

在每次删除后我们只要让top-=m即可,其中m为 sss 的长度

时间复杂度 O(∣t∣+∣s∣)O(|t|+|s|)O(∣t∣+∣s∣)

代码如下

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define MAXN (int)(1e6+5)
int n,m,fail[MAXN],top,stk[MAXN];
char t[MAXN],s[MAXN],ans[MAXN];
signed main()
{scanf("%s\n%s\n",t+1,s+1);n=strlen(t+1);m=strlen(s+1);for(int i=2,j=0; i<=m; i++){while(j&&s[i]!=s[j+1])j=fail[j];if(s[i]==s[j+1])++j;fail[i]=j;}for(int i=1,j=0; i<=n; i++){while(j&&t[i]!=s[j+1])j=fail[j];if(t[i]==s[j+1])++j;stk[++top]=j;ans[top]=t[i];if(j==m)top-=m,j=stk[top];}ans[top+1]='\0'; // 不要忘了这个哦!printf("%s",ans+1);return 0;
}

当然这个题还有个加强版

做法类似,只不过变成多模式串匹配了而已

题解在此

转载请说明出处

洛谷P4824 [USACO15FEB] Censoring S 题解相关推荐

  1. P4824 [USACO15FEB]Censoring S kmp + 栈

    传送门 文章目录 题意: 思路: 题意: 思路: 如果删除之后两个串不拼起来就是个裸kmpkmpkmp了,但是这个题能拼起来,拼起来之后还有可能生成一个新的串,而且起点在当前位置之前. 考虑是否能找到 ...

  2. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

  3. 洛谷P3336 [ZJOI2013]话旧 题解

    洛谷P3336 [ZJOI2013]话旧 题解 题目链接:P3336 [ZJOI2013]话旧 题意:小林跟着银河队选手去了一趟宇宙比赛,耳濡目染,变得学术起来.回来后,他发现世界大变样了.比丘兽究级 ...

  4. 洛谷P4683 [IOI2008] Type Printer 题解

    洛谷P4683 [IOI2008] Type Printer 题解 题目链接:P4683 [IOI2008] Type Printer 题意: 你需要利用一台可移动的打印机打印出NNN个单词.这种可移 ...

  5. 洛谷P3647 [APIO2014] 连珠线 题解

    洛谷P3647 [APIO2014] 连珠线 题解 题目链接:P3647 [APIO2014] 连珠线 题意: 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或 ...

  6. 洛谷P4170 [CQOI2007]涂色 题解

    洛谷P4170 [CQOI2007]涂色 题解 题目链接:P4170 [CQOI2007]涂色 题意: 假设你有一条长度为 555 的木板,初始时没有涂过任何颜色.你希望把它的 555 个单位长度分别 ...

  7. 洛谷P1868 饥饿的奶牛 题解

    洛谷P1868 饥饿的奶牛 题解 题目链接:P1868 饥饿的奶牛 题意: 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有 NNN 个区间,每个区 ...

  8. 洛谷P1462 通往奥格瑞玛的道路 题解

    洛谷P1462 通往奥格瑞玛的道路 题解 题目链接:P1462 通往奥格瑞玛的道路 题意:在艾泽拉斯,有 nnn 个城市.编号为 1,2,3,-,n1,2,3,\ldots,n1,2,3,-,n . ...

  9. 洛谷 P2015 二叉苹果树 题解

    洛谷 P2015 二叉苹果树 题解 洛谷 P2015 题目 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有NNN个结点(叶子点或者树枝分叉点),编号为1-NNN ...

  10. 洛谷P3879 [TJOI2010] 阅读理解 题解

    洛谷P3879 [TJOI2010] 阅读理解 题解 题目链接:P3879 [TJOI2010] 阅读理解 题意: 英语老师留了 NNN 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节 ...

最新文章

  1. 在python实现快速傅里叶变换FFT与频域滤波
  2. 咨询笔记:麦肯锡7步成诗
  3. HTML基础知识(w3school)
  4. 手机也能当电脑用?--谈谈未来智能手机操作系统的走向
  5. 【kafka】Kafka coordinator coordinator 原理剖析
  6. Remote branch Develop not found in upstream origin
  7. mysql数据库在工控自动化应用_robotframework自动化系列:操作mysql数据库
  8. Keymob锁屏:三屏切换 开启移动入口平台新时代
  9. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  10. 小米无线路由器服务器用户名和密码忘了,小米路由器管理密码忘记了怎么办?...
  11. 百度和谷歌到底有什么区别?看完终于明白了!
  12. Linux下安装调试MQTT Mosquitto
  13. 程序员好几年才能成为架构师_成为更好的企业架构师
  14. 泛微荣获统信创客北京·鲲鹏应用创新大赛2022北京区域三等奖
  15. 鸿蒙系统经常黑屏,电脑老是会黑屏是为什么
  16. 魂武者服务器维护,《魂武者》8月16日停机更新公告
  17. 无法打开安装程序包....确认这是一个有效的windows installer程序包
  18. 年轻人,你的时间到哪啦?
  19. 《漫画算法》读书心得笔记-未完
  20. 微信文件没网络怎么打印?微信中的文件如何快速打印

热门文章

  1. CSS3图片div浮动3D动画效果
  2. 全通系统定义、零极点关系、应用
  3. Android编译内核并刷入
  4. STM32比较器的使用
  5. python俄罗斯方块算法详解_python俄罗斯方块
  6. STM32之俄罗斯方块
  7. 数字证书和SSL的学习
  8. 计算机网速单位是什么,文件大小和网速的单位
  9. 银行那些事儿--银行会计
  10. 电脑tdr太低是什么意思_SOLIDWORKS TDR 错误解决办法