SCU 4438 Censor
$KMP$,链表。
将$p$弄成链表,每次匹配到,删掉中间的,继续匹配。
#include<bits/stdc++.h> using namespace std;const int INF = 0x7FFFFFFF; const int mod = 1e9 + 7; const int N = 5e6 + 10; const int M = 1e4 + 1; const double eps = 1e-10; int T,n,m;char w[N],p[N]; int L[N],R[N],h; int lenp,lenw; int t[N]; int nt[N];void init() {nt[0] = -1;for (int i = 0; w[i]; i++){int k = nt[i];while (k >= 0 && w[i] != w[k]) k = nt[k];nt[i + 1] = k + 1;} }int main() {while(~scanf("%s%s",w,p+1)){lenp=strlen(p+1); lenw = strlen(w);for(int i=1;i<=lenp;i++) L[i]=i-1,R[i]=i+1;init(); R[0]=1; L[lenp+1] = lenp; t[0]=nt[1];for (int i = R[0], j = nt[1]; p[i];){t[i]=j;if (j < 0 || p[i] == w[j]){i=R[i], j++;if (!w[j]){int sum=0;for(int u=L[i];;u=L[u]){if(sum==lenw){j=t[u];i=u;if(i==0) i=R[0];break;}int x=L[u];int y=R[u];R[x]=y;L[y]=x;sum++;}}}else j = nt[j];}for(int i=R[0];i!=lenp+1;i=R[i]){printf("%c",p[i]);}printf("\n");}return 0; }
转载于:https://www.cnblogs.com/zufezzt/p/6648392.html
SCU 4438 Censor相关推荐
- 【哈希-字符串匹配+模拟栈】SCU - 4438: Censor(哈希详解哈哈哈)
写在前:由于哈希没有好好听讲,也没有下来看.这是排位我开的第一道题,直接string暴力T了.昨天其实就看了哈希,太浮躁,于是本来很简单的哈希愣是没看懂.(于是放弃去看爱5了23333333)今天补上 ...
- ACM: SCU 4438 Censor - KMP
SCU 4438 Censor Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Practice Des ...
- SCU - 4438——Censor(哈希)
题目链接:http://acm.scu.edu.cn/soj/problem.action?id=4438 题意:给出一个串a和串b,串b中如果有a串则删除,删除后b剩下的串再连到一起,再找串a,反复 ...
- SCU - 4438 Censor
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...
- SCU - 4438 Censor
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...
- SCU - 4438 Censor (KMP)
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...
- SCU 4438:Censor
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...
- SCU 4438 Censor (KMP)
题目大意: 就是现在给出两个字符串A, B, 长度都不超过500万, 要求每次将B中第一次A的出现删除, 然后将B剩下的两段前后合并, 然后重复这个过程直到没有可以删除的A位置, 问最后剩下的串是什么 ...
- SCU 4438 Censor(Hash)题解
题意:找出字符串p中的w串删除,反复操作,直到找不到w,输出这个串 思路:哈希处理前缀和,如果值相同就删掉. 代码: #include<iostream> #include<algo ...
最新文章
- golang并发和并行
- java 先序遍历_二叉树的前序中序后序遍历(java代码)
- 重学java基础第五课:博客的重要性
- oracle单表存储记录,oracle从各个表获得数据保存到另一个表
- cxVerticalGrid赋值是实时更新
- java程序员语录_2019精选java程序员语录大全
- 微信打飞机思路总结 蓝懿教育
- lavaral中文手册_Laravel5.3手册下载
- 筛选中很容易粘贴到被隐藏部分_在Excel中粘贴时如何跳过隐藏行
- python数据平滑处理,numpy之数据平滑处理
- 【网站排名软件】如何让网站关键词快速排名到首页
- 大学计算机基础超详细知识点(高手总结),大学计算机基础超详细知识点(高手总结)免费-...
- 学习狂神mybatis
- electron-rebuild
- 【基础】java操作word,自动更新目录/域
- 高等数学(第七版)同济大学 习题9-4 (前11题)个人解答
- Pinyin4J使用方法
- 《黑客帝国》或颠倒的两面
- srsLTE 源码分析 UE_06 PLMN选择之SIB1
- 小微商家大调查:三成是夫妻店,八成受假钞困扰
热门文章
- linux 抓包文件 导出,tcpdump抓包和scp导出以及Wireshark查看
- 强制生成32位arm程序_ARM版本系列及家族成员梳理
- 编写java程序的三步骤_帮助Java小白涨知识的教程(三)(运行HelloWorld程序)
- css中float详解,CSS浮动属性Float详解?史上最全Float详解
- debian 8 mysql_在Debian 8系统安装 nginx + php + mysql(MariaDB) 基本Web环境
- html鼠标点击伪类,CSS伪类:CSS3鼠标滑过按钮动画
- oracle 给表空间改名,Oracle重命名表空间和删除表空间
- 小爱音箱怎么装app_79元的Redmi小爱音箱怎么样?这里有一份体验报告
- mysql+rownumber的用法_mysql中如何实现row_number
- chrome插件 vscode_2020年,前端开发者必备的10个VS Code扩展插件