SCU 4438 Censor(哈希+模拟栈)
Censor
frog is now a editor to censor so-called sensitive words (敏感词).
She has a long text \(p\). Her job is relatively simple -- just to find the first occurence of sensitive word \(w\) and remove it.
frog repeats over and over again. Help her do the tedious work.
Input
The input consists of multiple tests. For each test:
The first line contains \(1\) string \(w\). The second line contains \(1\) string \(p\).
(\(1 \leq \textrm{length of}\ w, p \leq 5 \cdot 10^6\), \(w, p\) consists of only lowercase letter)
Output
For each test, write \(1\) string which denotes the censored text.
Sample Input
abc
aaabcbc
b
bbb
abc
ab
Sample Output
a
ab
题目链接:SCU 4438
用哈希来做的话比KMP简单很多,每一次加入一个字符,看倒数Len个字符的哈希值是否和模式串相同,若相同则弹出Len个元素,否则再加入元素并更新哈希值
代码:
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
#define CLR(arr,val) memset(arr,val,sizeof(arr))
#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
typedef pair<int, int> pii;
typedef unsigned long long ULL;
const double PI = acos(-1.0);
const int N = 5e6 + 7;
const ULL seed = 1e9 + 7;
char w[N], p[N], ans[N];
int lw, lp;
ULL prefix[N] = {1ull}, st[N]; ULL gethash(char s[], int len)
{
ULL hashval = 0ull;
for (int i = 0; i < len; ++i)
hashval = hashval * seed + s[i];
return hashval;
} int main(void)
{
int i;
for (i = 1; i < N; ++i)
prefix[i] = prefix[i - 1] * seed;
while (~scanf("%s%s", w, p))
{
lw = strlen(w);
lp = strlen(p);
ULL tar = gethash(w, lw);
int top = 0;
st[top] = 0;
for (i = 0; i < lp; ++i)
{
ans[top++] = p[i];
st[top] = st[top - 1] * seed + p[i];
if (top >= lw && st[top] - st[top - lw]*prefix[lw] == tar)
top -= lw;
}
ans[top] = '\0';
printf("%s\n", ans);
}
return 0;
}
SCU 4438 Censor(哈希+模拟栈)的更多相关文章
- ACM: SCU 4438 Censor - KMP
SCU 4438 Censor Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Practice D ...
- SCU 4438 Censor KMP/Hash
题意:给定一个模式串和文本,要求删除所有模式串.可能删除后会形成新的模式串,必须全部删除. 思路1:kmp算法求得失配数组,用一个match数组记录文本串中第i字符和未删除的字符能匹配模式串的长度.这 ...
- 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(Hash)题解
题意:找出字符串p中的w串删除,反复操作,直到找不到w,输出这个串 思路:哈希处理前缀和,如果值相同就删掉. 代码: #include<iostream> #include<algo ...
- SCU 4438 Censor|KMP变形题
传送门 Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text P. He ...
- ACM/ICPC 之 用双向链表 or 模拟栈 解“栈混洗”问题-火车调度(TSH OJ - Train)
本篇用双向链表和模拟栈混洗过程两种解答方式具体解答“栈混洗”的应用问题 有关栈混洗的定义和解释在此篇:手记-栈与队列相关 列车调度(Train) 描述 某列车调度站的铁道联接结构如Figure 1所示 ...
- java 16 - 5 LinkedList模拟栈数据结构的集合
请用LinkedList模拟栈数据结构的集合,并测试 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟. package cn_LinkedList; impo ...
- hdu 4699 Editor 模拟栈
思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ...
- 【DataStructure In Python】Python模拟栈和队列
用Python模拟栈和队列主要是利用List,当然也可以使用collection的deque.以下内容为栈: #! /usr/bin/env python # DataStructure Stack ...
随机推荐
- java基础编程——链表反转
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目代码 /** * @program: JavaCode * @description:输入一个链表,按链表值从尾到头 ...
- 自定义配置Webpack和Babel配置
在使用ant-design-vue的包时样式是可以生效的但是如果我需要用到less文件时会报一个异常 当然这个异常其实很清晰的说明了什么问题看错误信息里面有issues地址,看来问题不止我们遇见了可以 ...
- 洛谷P2468 [SDOI2010]粟粟的书架(二分答案 前缀和 主席树)
题意 题目链接 给出一个矩形,每个点都有一些值,每次询问一个子矩阵最少需要拿几个数才能构成给出的值 Sol 这题是真坑啊.. 首先出题人强行把两个题拼到了一起, 对于前$50 \%$的数据,考虑二分答 ...
- HDU 2045 LELE的RPG难题
递推 枚举起点状态 #include <algorithm> #include <iostream> #include <cstring> #include < ...
- http 工作模式与模块
目录 http 工作模式与模块 http 服务器应用 MPM工作模式 prefork worker event 进程角色 httpd功能特性 http 安装 centos6配置目录 http 2.2 ...
- Linux菜鸟起飞之路【一】基本知识与Linux的安装
一.操作系统基本常识 1.操作系统的定义:操作系统是用来协调.管理和控制计算机硬件与软件资源的系统程序,介于硬件与应用程序之间. 2.操作系统内核的定义:操作系统内核是一个管理和控制程序,负责管理计算 ...
- 自动化运维工具——ansible剧本playbook(三)
一.Playbook--Ansible剧本 playbook是由一个或多个 "play"组成的列表 play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的ta ...
- 添加SQL字段
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...
- Olympic Class Ships【奥林匹克级邮轮】
Olympic Class Ships You probably know about the Titanic, but it was actually just noe of three state ...
- DFS、栈、双向队列:CF264A- Escape from Stones
题目: Squirrel Liss liv Escape from Stonesed in a forest peacefully, but unexpected trouble happens. S ...