当前位置: 首页 > news >正文

P3121 [USACO15FEB] Censoring G

P3121 [USACO15FEB] Censoring G

大意

给若干个模式串,和一个文本串,按从前到后的顺序,如果出现一个模式串就删除,注意删除后拼接处可能再出现模式串。

思路

一道好题?

首先是,我们发现是一个文本串和多个模式串的匹配,先想到要用 AC 自动机去解决这个问题,我们先把这些模式串用 AC 自动机构建好,然后我们考虑这样的问题,如何确定是否需要删除串,删除多长。

我们需要用两个 stack 去存贮,一个用来存储最终的答案,一个用来存储状态,不然删完你就不知道原来你在 AC 自动机上走到哪个地方了。

只需要在插入字符串的时候做一些手脚,在结束的位置把答案记一下。

代码

#include<iostream>
#include<queue>
#include<cstring>
#include<vector>
using namespace std;const int MAXN = 1e5 + 5;
int ch[MAXN][26], idx = 0;
int fail[MAXN], id[MAXN];
int bad[MAXN];
char c[MAXN], s[MAXN];void Insert(char *q){int now = 0;for(int i = 0;q[i];i ++){int x = q[i] - 'a';if(!ch[now][x]){ch[now][x] = ++ idx;}now = ch[now][x];}bad[now] = strlen(q);
//	cout << now << ": " << bad[now] << '\n';
}void build(){queue<int> q;for(int i = 0;i < 26;i ++){if(ch[0][i]) q.push(ch[0][i]);}while(!q.empty()){int u = q.front(); q.pop();for(int i = 0;i < 26;i ++){if(ch[u][i]){fail[ch[u][i]] = ch[fail[u]][i];q.push(ch[u][i]);}else{ch[u][i] = ch[fail[u]][i];}}}
}int main(){// freopen("farmerjohn.in", "r", stdin);// freopen("farmerjohn.out", "w", stdout);int n;cin >> s;cin >> n;for (int i = 1;i <= n;i ++){cin >> c;Insert(c);}build();vector<char> res;vector<int> st;int now = 0;st.push_back(0);for(int i = 0;s[i];i ++){int x = s[i] - 'a';now = ch[now][x];res.push_back(s[i]);st.push_back(now);
//		cout << now << '\n';if(bad[now]){
//			cout << "hhh\n";int ct = bad[now];for(int i = 0;i < ct;i ++){res.pop_back();st.pop_back();}now = st.back();}}for(char x : res){cout << x;}return 0;
}
http://www.jsqmd.com/news/396915/

相关文章:

  • 2026年国内诚信的截止阀实力厂家哪家强,锻钢闸阀/通风蝶阀/V型球阀/锻钢截止阀/蝶式止回阀,截止阀企业联系方式 - 品牌推荐师
  • 携程旅行 参数分析
  • 2026年谷歌/google独立站优化代运营外贸推广公司/服务商深度测评榜单:这5家值得重点关注! - 深圳昊客网络
  • 告别Hyprland/Niri键鼠共享难题:Pynergy —— 为 Wayland 设计的 Synergy 兼容客户端
  • 看完就会:MBA专属降AI率工具,千笔·专业降AIGC智能体 VS 灵感风暴AI
  • php代碼審計(危險函數了解與)
  • php代碼審計(危險函數了解與pikachu靶場分析)
  • 交稿前一晚!AI论文软件 千笔ai写作 VS 锐智 AI,研究生高效写作神器!
  • 格式总出错?千笔·专业论文写作工具,实力封神的AI论文软件
  • 小白救星!降AIGC网站 千笔 VS 笔捷Ai,专科生专属神器!
  • 王阳明心学05
  • 天虹提货券回收避坑指南 - 京顺回收
  • 建议收藏|8个降AIGC平台深度测评,本科生降AI率必备指南
  • 告别熬夜改稿!6款免费AI论文工具,一键生成初稿超省力 - 麟书学长
  • 科研党收藏!10个AI论文网站测评:本科生毕业论文写作必备工具推荐
  • 2026国内做得好的双片钉箱机公司,排行榜单告诉你,双片钉箱机实力厂家优质品牌榜单更新 - 品牌推荐师
  • 用过才敢说 9个AI论文软件测评:MBA毕业论文+科研写作必备工具推荐
  • Python基于Vue的 网络书店管理系统django flask pycharm
  • Python基于Vue的中医药文献管理系统 django flask pycharm
  • Python基于Vue的中小型企业网络办公管理系统 django flask pycharm
  • 上海装修设计新焦点:2026原木风空间设计厂家推荐,原木风室内装修/轻奢室内空间设计,上海装修设计公司哪家好 - 品牌推荐师
  • Python基于Vue的线上医疗服务系统的设计与实现 django flask pycharm
  • Python基于Vue的 宠物驯养网站设计与实现django flask pycharm
  • 施耐德Citect软件中使用cicde脚本获取过程分析器对象视图选择的时间跨度
  • DDP 理论与实战笔记(面试版)
  • V汤泉优惠购单人18H春节可用
  • MMC-HVDC仿真模型解析:探讨双端MMC与多端直流电网中的NLM与均压控制策略
  • V汤泉优惠购双人18H春节可用
  • SQL 入门 2:LIKE、正则、 ORDER BY 与LIMIT
  • 基于Spring Boot装修公司家装管理平台的设计与实现-Pycharm django