传送门

文章目录

  • 题意:
  • 思路:

题意:

思路:

如果删除之后两个串不拼起来就是个裸kmpkmpkmp了,但是这个题能拼起来,拼起来之后还有可能生成一个新的串,而且起点在当前位置之前。
考虑是否能找到删掉之后从哪个位置开始,显然有点不可做。
考虑到了第iii个位置,删掉了长度为mmm的串,那么应该到了第i−mi-mi−m的位置,我们不用考虑从哪里开始,可以发现只需要知道i−mi-mi−m的位置匹配到了TTT串的哪个位置,让后继续匹配就行了,所以我们开一个数组记录到了第iii个位置匹配到了哪个位置,让后再开一个栈用来输出答案。
复杂度O(n)O(n)O(n)

// Problem: P4824 [USACO15FEB]Censoring S
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P4824
// Memory Limit: 125 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
char a[N],b[N];
int ne[N],stk[N],top,pos[N];int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%s%s",a+1,b+1);n=strlen(a+1); m=strlen(b+1);for(int i=2,j=0;i<=m;i++) {while(j&&b[i]!=b[j+1]) j=ne[j];if(b[i]==b[j+1]) j++;ne[i]=j;}for(int i=1,j=0;i<=n;i++) {while(j&&a[i]!=b[j+1]) j=ne[j];if(a[i]==b[j+1]) j++;stk[++top]=i; pos[i]=j;if(j==m) {top-=m; j=pos[stk[top]];}}for(int i=1;i<=top;i++) printf("%c",a[stk[i]]);return 0;
}
/**/

P4824 [USACO15FEB]Censoring S kmp + 栈相关推荐

  1. [BZOJ 3942] [Usaco2015 Feb] Censoring 【KMP】

    题目链接:BZOJ - 3942 题目分析 我们发现,删掉一段 T 之后,被删除的部分前面的一段可能和后面的一段连接起来出现新的 T . 所以我们删掉一段 T 之后应该接着被删除的位置之前的继续向后匹 ...

  2. bzoj3940 [Usaco2015 Feb]Censoring(ACAM+栈)

    题目大意:给定文本串S,n个模式串.要求从S中依次删去出现的模式串. 建出ACAM,直接用栈来模拟即可. #include <cstdio> #include <cstring> ...

  3. 【题单——基础字符串】菜鸡L_C_A的基础字符串(KMPACAM)

    洛谷题单 我是目录 P3375 [模板]KMP字符串匹配 CF1200E Compress Words P4824 USACO15FEB Censoring S P3435 [POI2006]OKR- ...

  4. 习题归纳:KMP,ACAM的也许不是一句话题解

    正题 CF1200E Compress Words 直接将所有串的后缀自动机建出来,要找i和i+1的后前缀公共部分时,就将i+1的所有前缀打标记,用i来倍增找标记,标记可能要dfs序来维护,所以是两个 ...

  5. 2020.5月做题记录

    2020.5.3 NOI2016 优秀的拆分 [链接] 想写SAM结果自闭了. BZOJ3064 CPU监控 线段树历史最大值模板题. 注意到其实带维护历史最大值最大的问题时维护tag. 这里我们将t ...

  6. ac自动机,自动ac机(bushi

    哈哈哈哈我学明白了也许吧.挂几篇题解: b站的这个up讲得太好啦:https://www.bilibili.com/video/BV1uJ411Y7Eg?p=3&vd_source=f5170 ...

  7. AC 自动机(ˉ﹃ˉ)

    AC 自动机(ˉ﹃ˉ) 其实学这么久字符串就是冲着这个算法在学,终于学到了 一.模板 1.[模板]AC自动机(简单版) 题目背景 警告:通过套取数据而直接"打表"过题者,是作弊行为 ...

  8. AC自动机(题目+模板)

    学习博客:https://www.cnblogs.com/hyfhaha/p/10802604.html AC自动机可以认为是kmp+trie树. trie树数组大小是字符串数目n*最大字符串长度mx ...

  9. 一本通提高篇 AC自动机

    本来想写树状数组的 好像mymymy申对这棵树有点迷茫 不过他不回我 那就接着来AVC自动机吧 UPD:20200517UPD:20200517UPD:20200517期中考试考完了 确实考完了-这辈 ...

最新文章

  1. linux 发行版本和 及其与linux内核之间的关系
  2. Quartus ii与Modelsim-altera 6.5b联调前仿真
  3. 【C++深度剖析教程40】使用数值型模板技术计算1+2+3+...+N的值
  4. C#中创建对象的方式
  5. xml转svg_C# Excel 转PDF/图片/HTML/TXT/XML/XPS/CSV/ODS/SVG/EMF
  6. java xml 节点路径,SelectSingleNode使用XPath为已知良好的xml节点路径返回null
  7. Javascript—③对象
  8. 基于GPT2的中文闲聊机器人/GPT2 for Chinese chitchat
  9. SQL书写规则30例
  10. 阿里P8架构师:淘宝技术架构从1.0到4.0的架构变迁!12页PPT详解
  11. pandas学习之透视表
  12. Eclipse中经常出现的问题解决方案
  13. 2PC 二阶段提交协议与3PC
  14. ESP8266WiFi模块资料整理
  15. Linux--Ubuntu的使用
  16. 到底什么是嵌入式?什么是单片机?
  17. EduCoder Java程序设计---Java语言基础(十)- 方法的使用
  18. 社会化营销,微博如何老树发新芽?
  19. 基于堆栈二值化自动编码器和二值化神经的无约束人脸表情识别算法(An efficient unconstrained FERa based on BAEs and BNN)
  20. 目前最好用的洞洞板布线软件LochMaster-ver.4.0

热门文章

  1. 假如把女生比作一种水果
  2. 心中一万只草泥马在奔腾是种怎样的体验?| 今日最佳
  3. 159个故事串起三千年大历史!这套“儿童版史记”太无敌了!
  4. 资料分享 | R语言资料分享来袭
  5. 你碰到过的最难调试的 Bug 是什么样的?
  6. HTML手机上图片显示被压扁,在重新调整Web浏览器HTML |时,文本会被压扁CSS
  7. 鸿蒙思维和小央美,北市场附近艺术培训
  8. git checkout 单个文件_git 如何回退单个文件
  9. oracle 参照完整性,Oracle中用表外键来保证系统参照完整性
  10. 对MATLAB课程教程的建议,关于MATLAB课程教学的几点探讨