# 10048. 「一本通 2.2 练习 4」Censoring

【题目描述】

给出两个字符串 $S$ 和 $T$,每次从前往后找到 $S$ 的一个子串 $A=T$ 并将其删除,空缺位依次向前补齐,重复上述操作多次,直到 $S$ 串中不含 $T$ 串。输出最终的 $S$ 串。

【算法】

1、kmp $O(n)$就可以定位。

2、栈是个好东西啊。

注:一开始想双指针,实在不好写。。。栈很好,它可以弹出去。。。(此处滑稽脸)

【代码】

#include <bits/stdc++.h>
using namespace std;
int l1,l2,top;
int nxt[1000100],f[1000100];
char s[1000100],t[1000100],ans[1000100];
void parse() {
nxt[1]=0;
for(int i=2,j=0;i<=l2;i++) {
while(j>0&&(j==l2||t[i]!=t[j+1])) j=nxt[j];
if(t[i]==t[j+1]) j++;
nxt[i]=j;
}
}
int main() {
scanf("%s%s",s+1,t+1);
l1=strlen(s+1),l2=strlen(t+1);
parse();
for(int i=1,j=0;i<=l1;i++) {
ans[++top]=s[i];
while(j>0&&(j==l2||s[i]!=t[j+1])) j=nxt[j];
if(s[i]==t[j+1]) j++;
f[top]=j;
if(j==l2) {
top-=l2;
j=f[top];
}
}
ans[++top]='\0';
printf("%s\n",ans+1);
return 0;
}

Censoring(栈+KMP)的更多相关文章

  1. BZOJ3942: [Usaco2015 Feb]Censoring 栈+KMP

    Description Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so ...

  2. bzoj 3942: [Usaco2015 Feb]Censoring【kmp+栈】

    好久没写kmp都不会写了-- 开两个栈,s存当前串,c存匹配位置 用t串在栈s上匹配,栈每次入栈一个原串字符,用t串匹配一下,如果栈s末尾匹配了t则弹栈 #include<iostream> ...

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

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

  4. Censoring【KMP算法+堆栈模拟】

    Censoring 传送门:链接   来源:UPC8203 题目描述 Farmer John has purchased a subscription to Good Hooveskeeping ma ...

  5. 【KMP】Censoring

    [KMP]Censoring 题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his ...

  6. 【BZOJ 3942】 Censoring

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3942 [算法] 栈 + KMP [代码] #include<bits/stdc ...

  7. [一本通学习笔记] AC自动机

    AC自动机可以看作是在Trie树上建立了fail指针,在这里可以看作fail链.如果u的fail链指向v,那么v的对应串一定是u对应串在所给定字符串集合的后缀集合中的最长的后缀. 我们考虑一下如何实现 ...

  8. 【BZOJ3940】【BZOJ3942】[Usaco2015 Feb]Censoring AC自动机/KMP/hash+栈

    [BZOJ3942][Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hoov ...

  9. LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈

    问题描述 LG4824 题解 大概需要回顾(看了题解) KMP 先对要删除的 模式串 进行自我匹配,求出 \(\mathrm{fail}\) 然后再扫 文本串 的过程中记录一下每个字符匹配的最大长度, ...

随机推荐

  1. matlab 计算灰度图像的一阶矩、二阶矩、三阶矩

    ​   一阶矩,定义了每个颜色分量的平均强度 ​  二阶矩,反映待测区域颜色方差,即不均匀性 ​  三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性 close all;clear all;clc; ...

  2. DOM元素

    元素的三种创建方法 1.doumrnt.write(可以写类名,各种表情属性)       script写在哪里就创建在哪 <button>点我</button> <sc ...

  3. LVS之DR模式

    目录: 网络环境 LVS服务器网络配置 LVS服务器添加ipvs规则 RS服务器配置 访问验证 抓包分析 注意事项 [网络环境] 网络拓扑结构如下表: 服务器 类型 网卡 IP MAC 说明 v_me ...

  4. 20191121-5 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10065 一.小组情况 组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名 ...

  5. Nginx之配置文件的解析

    1. ngx_command_t 为了统一配置项目的解析,Nginx 定义了如下数据类型对所有的 Nginx 配置项进行了统一的描述. typedef struct ngx_command_s ngx ...

  6. Laravel中Session的使用

    以file为示例 1.Http request session方法$request->session()->put('key1','value1');echo $request->s ...

  7. js对象和jQuery对象的区别

    (1)js对象的三种基本定位方式 (A)通过ID属性:document.getElementById() (B)通过NAME属性:document.getElementsByName() (C)通过标 ...

  8. django中iframe问题

    因为在django中无法识别我们普通的url格式,比如使用<iframe src="articles.html"></iframe>,这种格式django无 ...

  9. java(SSM)上传文件到七牛云(对象存储)

    项目中会用到大量的图片和小视频,为了分担服务器压力,将文件都放在七牛云.这里的思路很简单, 就是移动端.pc端把文件上传到服务器,服务器做一个临时缓存,保存必要的信息到数据库后, 将文件上传到七牛云, ...

  10. Swift3.0项目学习: 创建撰写按钮

    import UIKit class PSMainViewController: UITabBarController { override func viewDidLoad() { super.vi ...