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≤length of w,p≤5⋅106, 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

题目大意:给出两个字符串,然后在第二个字符串中删去第一个字符串(ps:不是子序列,是如果存在这个字符串就删去,然后剩下的能够构成这个字符串就再删去。)。
解题思路:我们模拟删去的过程,如果后面的字符串和第一个字符串相同,那么我们就删去,然后再判断,这里我们判断是否相同使用字符串hash来做,如果删去,就表示我们的这一位是在前x位(x是第一个字符串的长度)。

代码:

#pragma GCC optimize(2)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <bitset>
#include <queue>
//#include <random>
#include <time.h>
using namespace std;
#define int long long
#define ull unsigned long long
#define ls root<<1
#define rs root<<1|1
const int maxn = 5e6 + 7;
//std::mt19937 rnd(time(NULL));
stack<char> st;
string a, b;
ull det[maxn], hash1[maxn], s;
signed main()
{det[0] = 1;for (int i = 1; i < maxn;i++)det[i] = det[i - 1] * 131;while (cin >> a >> b){while(!st.empty())st.pop();s = 0;for (int i = 0; a[i] != '\0';i++){s = s * 131 + a[i];}int cnt = 0;for (int i = 0; b[i] != '\0';i++){st.push(b[i]);if(st.size()==1){hash1[++cnt] = b[i];}else{cnt++;hash1[cnt] = hash1[cnt - 1] * 131 + b[i];}if(st.size()>=a.size() && (hash1[cnt]-hash1[cnt-a.size()]*det[a.size()])==s){for (int j = 1; j <= a.size();j++){cnt--;st.pop();}}}string ans;while(!st.empty()){ans += st.top();st.pop();}reverse(ans.begin(), ans.end());cout << ans << endl;}
}

SCU - 4438(字符串hash)相关推荐

  1. SCU 4438 字符串哈希

    题意:一个敏感词w和一个文本p,在文本中不断地删除敏感词w,求最后的剩下的文本p. 题解:求出敏感词的hash值,定p的每一个字符都是以第一个字符开始的一个句子,求出它们的hash值入栈,当某一段的h ...

  2. Censor SCU - 4438 (hash 哈希做法)

    Censor SCU - 4438 题意:给你两串字符串w和p.在p中不停删除w,直到p中没有w.输出此时剩余的字符串. 解题思路: 字符串问题考虑hash做法.先求出字符串w的哈希值.然后遍历字符串 ...

  3. 【哈希-字符串匹配+模拟栈】SCU - 4438: Censor(哈希详解哈哈哈)

    写在前:由于哈希没有好好听讲,也没有下来看.这是排位我开的第一道题,直接string暴力T了.昨天其实就看了哈希,太浮躁,于是本来很简单的哈希愣是没看懂.(于是放弃去看爱5了23333333)今天补上 ...

  4. SCU - 4438 (KMP)

    SCU - 4438 (KMP) Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a lo ...

  5. ACM: SCU 4438 Censor - KMP

    SCU 4438 Censor Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Practice Des ...

  6. hdu4821 字符串hash

    参考博客:点击打开链接 字符串hash典例. 这里用的是bkdrhash 法.也是最常用的冲突最少的一种.原理:把字符串和数值对应.这里用base=31(一般用质数), 先是扫一遍,处理处每个位子到结 ...

  7. hdu4821 字符串hash(有多少(M*L长的,M个不相同)子串))

    题意这英语..反正我是读不懂== 题意:给定一个串,有多少M*L的子串,其中子串的M个子串不相同= (注:某一位不相同即为不相同) 很明显要On的扫,但是似乎前一个与后一个没有关系?是的,前第x个(x ...

  8. 字符串Hash的原理与应用

    字符串Hash无论是在ACM竞赛中还是在工程中都有着广泛的应用,所以很有必要掌握好它的用法.主要分为两个部 分:Hash映射和冲突处理.而本文主要来详细讲解Hash映射的方法及应用,下篇文章将会介绍如 ...

  9. 字符串hash(二)

    从上一届已经讲了字符串hash的方法,hash后怎么用也很重要 文章目录 一.查询子串的hash值 查询子串减去期中一个字符后的hash值 查询两个子串拼接的hash值 **hash的模板(自然溢出) ...

最新文章

  1. 浅说——九讲背包之01背包
  2. 121 Best Time to Buy and Sell Stock 买卖股票的最佳时机
  3. Android开发之修改项目的仓库地址亲测有效
  4. 使用.Net Core实现FNV分布式hash一致性算法
  5. 新手算法学习之路----二分法Last-position-of-Target
  6. IOS 传值方法总结
  7. 深入理解Linux-hostname
  8. bzoj 3156: 防御准备(斜率DP)
  9. 在IDEA中进行开发时,Maven的插件或依赖显示红线的问题
  10. deeplearning 源码收集
  11. 能否利用Hadoop搭建完整的云计算平台
  12. 编译ffmpeg安卓库(clang篇),含armeabi-v7a , arm64-v8a, x86, x86_64
  13. 玩转 SSH(六):SpringMVC + MyBatis 架构搭建(注解版)
  14. python将网页保存为pdf,python-网页保存为pdf
  15. 计算机视觉论文-2021-07-20
  16. 编程之路之数据库(十)- PDO详解
  17. vuetify图标大全
  18. Letswave 教程:脑电数据预处理与叠加平均
  19. PostgreSQL 10 基于日志的备份与还原
  20. 小米系统不显示手动选择安装包

热门文章

  1. MIT用AI开发出道路识别系统,用于提升谷歌地图的精准性
  2. 怎么去理解数学,如何避免荒缪感。
  3. 山东省潍坊市谷歌高清卫星地图下载(百度网盘离线包下载)
  4. 信号归一化功率_选择用于 850 nm 信号功率测量的检测器
  5. 不同品牌UPS电源modbus通讯总线集中监控
  6. 2021年朝阳区技能大师工作室及建设项目申报奖励及条件,补贴30万
  7. USB PD3.0 PPS (Programmable Power Supply)
  8. 音频服务器未能正常启动,Win10音频服务未正常运行怎么办?
  9. C语言实现一个先进先出的队列
  10. 用Oracle的分析函数删除重复的表格