Censoring

Time Limit: 10 Sec  Memory Limit: 128 MB
[Submit][Status][Discuss]

Description

  有一个S串和一个T串,长度均小于1,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程。

Input

  第一行是S串,第二行是T串。

Output

  输出一行,表示按照操作后得到的串。

Sample Input

  whatthemomooofun
  moo

Sample Output

  whatthefun

HINT

  串长小于1000000。

Main idea

  按照S串的顺序加入S串中的字符,一旦出现了一段和T串一样,则删去这一段,求最后得到的串。

Solution

  运用KMP,我们显然只要先把T串加入到Stack里面,然后再按照S的顺序加入字符,每次求next(next[i]表示s[1…i]中最长的公共前后缀),显然next==T串长度的话删去相应长度即可。

Code

 1 #include<iostream>
 2 #include<string>
 3 #include<algorithm>
 4 #include<cstdio>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<cmath>
 8 #include<bitset>
 9 using namespace std;
10
11 const int ONE=2000001;
12
13 int n,m;
14 char a[ONE],b[ONE],Stack[ONE];
15 int next[ONE],j,top;
16
17 int get()
18 {
19         int res=1,Q=1;char c;
20         while( (c=getchar())<48 || c>57 )
21         if(c=='-')Q=-1;
22         res=c-48;
23         while( (c=getchar())>=48 && c<=57 )
24         res=res*10+c-48;
25         return res*Q;
26 }
27
28 void Deal(int n,char a[],int PD)
29 {
30         for(int i=PD;i<=n;i++)
31         {
32             Stack[++top] = a[i];
33             j=next[top-1];
34             while(j && Stack[j+1] != Stack[top]) j=next[j];
35             if(Stack[j+1] == Stack[top]) j++;
36             next[top] = j;
37             if(PD==1 && next[top]==m) top-=m;
38         }
39 }
40
41 int main()
42 {
43         scanf("%s",a+1);    n=strlen(a+1);
44         scanf("%s",b+1);    m=strlen(b+1);
45         Stack[++top]=b[1];
46         Deal(m,b,2);    Deal(n,a,1);
47
48         for(int i=m+1;i<=top;i++)
49             printf("%c",Stack[i]);
50
51 }

View Code

转载于:https://www.cnblogs.com/BearChild/p/6479502.html

【BZOJ3942】Censoring [KMP]相关推荐

  1. 算法学习笔记【1】:KMP 算法

    实际上这个算法很早就学了,但是那个时候并没有了解的很清晰. 搞得好像现在有似的 首先,KMP 是三个人的名字... 首先,KMP 算法是用于字符串匹配的,时间复杂度为 O(n+m)O(n+m)O(n+ ...

  2. 【XSY2472】string KMP 期望DP

    题目大意 给定一个由且仅由字符'H','T'构成的字符串\(S\). ​ 给定一个最初为空的字符串\(T\) ,每次随机地在\(T\)的末尾添加'H'或者'T'. 问当\(S\)为\(T\)的后缀时, ...

  3. 【LeetCode】图解KMP算法

    文章目录 前言 1.简介 2.图解KMP思想 2.1.串的匹配 2.2.寻找相同前后缀 3.真枪实战 3.1.题目描述 3.2.示例 3.3.提示 3.4.思路 3.5.具体实现 3.6.测试结果 前 ...

  4. 【模式匹配】之 —— KMP算法详解及证明

    一    RevisionsHistory 1 一       Revisions History 二       前言 三       关于算法学习 四       KMP算法始末 KMP算法是用来 ...

  5. 【模板】Trie KMP ACAM模板

    Trie KMP ACAM模板 虽然实际情况这个都得改 Trie 01Trie也差不多. const int MAXN = 1e6 + 10, SIZE = 26; struct Trie{int c ...

  6. 【NOI2014】动物园 kmp性质

    对于字符串\(S\)的前\(i\)个字符构成的子串,既是它的后缀又是它的前缀的字符串中,它本身除外,最长的长度记作 \(next[i]\) 真是精炼的定义 char s[maxn];int n; in ...

  7. 【BZOJ3940】[USACO2015 Feb] Censoring (AC自动机的小应用)

    点此看题面 大致题意: 给你一个文本串和NNN个模式串,要你将每一个模式串从文本串中删去.(此题是[bzoj3942][Usaco2015 Feb]Censoring的升级版) ACACAC自动机 这 ...

  8. 暑假N天乐【比赛篇】 —— 2019杭电暑期多校训练营(第五场)

    开启疯狂水题解模式,大概会持续好几次...直到我赶上进度为止. 以下题解包括: \[1001[HDU-6624] \\ 1004[HDU-6627] \\ 1005[HDU-6628] \\ 1006 ...

  9. 【MCU】一种单片机节省内存的方法(补充)

    1.聊一聊 以前听这首曲子内心会变得格外平静,然而现在却五味陈杂! 今天主要跟大家分享一个MCU省内存的办法,同时也欢迎大家在文末问答留言讨论. 2.读前必备 对于MCU节省内存办法大合集bug菌在很 ...

  10. 【swjtu】数据结构实验4_基于改进KMP算法的子串查找与替换

    实验内容及要求: 从键盘输入主串s以及子串t1和t2.编写程序,将主串s中所有t1子串替换为t2子串,输出替换后得到的串以及t1被替换的次数.要求子串查找采用改进KMP算法. 实验目的:掌握KMP算法 ...

最新文章

  1. boost::distance用法的测试程序
  2. 揭秘重度MMORPG手游后台性能优化方案
  3. Chrome 键盘快捷键(Mac)
  4. JavaOne 2012覆盖率
  5. vue中的data用return返回
  6. 【MySql】MySql存储,游标,循环的简单使用
  7. python实现人脸识别比对_人脸识别并比对实现(基于face_recognition)
  8. mongodb客户端操作常用命令
  9. java实现订单物品计算佣金,java三角形、NextDay、佣金问题代码
  10. gpio能测Linux启动时间,linux – 如何自动测量新建图像的启动时间...
  11. admixture软件_使用ADMIXTURE进行群体结构分析
  12. 华为NP课程笔记23-VRRP
  13. 自动驾驶技术发展的5个阶段和现状
  14. 获取鼠标图片和鼠标位置的方法
  15. 华为手机热点无法连接_华为手机热点连不上
  16. Graph Neural Network(GAE,GVAE,ARGA)
  17. 【生活小捣鼓】登录PC端某网站,需要他人(不在身边)手机扫二维码,这时候该怎么办?
  18. JFinal和JBoot创建一个定时任务
  19. css页面一些动态效果展示
  20. 华为、OPPO、vivo、小米牵头制定快充协议统一技术

热门文章

  1. “赢在幻灯片”有奖征文启事
  2. 16.2互联网媒体信息讽刺识别
  3. module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
  4. java后台生成分页_Java实现分页的前台页面和后台代码
  5. python如何把控制台输出保存到文件中_如何用10行代码完成目标检测
  6. C语言 — 编程规范、标识符命名规范
  7. Android studio如何打包APK文件
  8. git本地给远程仓库创建分支
  9. mysql知识点拾遗梳理
  10. MVC5+EF6之EF CRUD