题意:在文本串上删除一些字符串 每次优先删除从左边开始第一个满足的

   删除后剩下的串连在一起重复删除步骤 直到不能删

题解:建fail 用栈存当前放进了那些字符 如果可以删 fail指针跳到前面去

好菜啊TAT 原来还有个优化

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. char t[];
  5. char s[];
  6. int n, cnt, tot;
  7. int ch[][];
  8. int val[];
  9. int que[];
  10. int fail[];
  11. char ans[];
  12. int id[];
  13.  
  14. void insert() {
  15. int len = strlen(s);
  16.  
  17. int now = ;
  18. for(int i = ; i < len; i++) {
  19. int c = s[i] - 'a';
  20. if(!ch[now][c]) ch[now][c] = ++cnt;
  21. now = ch[now][c];
  22. }
  23. val[now] = len;
  24. }
  25.  
  26. void getfail() {
  27. int l1 = , r1 = ;
  28. que[++r1] = ;
  29.  
  30. while(l1 <= r1) {
  31. int now = que[l1];
  32. l1++;
  33.  
  34. for(int i = ; i < ; i++) {
  35. if(ch[now][i]) {
  36. int y = fail[now];
  37. while(!ch[y][i]) y = fail[y];
  38. fail[ch[now][i]] = ch[y][i];
  39. que[++r1] = ch[now][i];
  40. }
  41. else ch[now][i] = ch[fail[now]][i];
  42. }
  43. }
  44. }
  45.  
  46. void init() {
  47. cnt = ;
  48. tot = ;
  49. id[] = ;
  50. for(int i = ; i < ; i++) ch[][i] = ;
  51. }
  52.  
  53. int main() {
  54. init();
  55. scanf("%s", t + );
  56. int len = strlen(t + );
  57.  
  58. scanf("%d", &n);
  59. for(int i = ; i <= n; i++) {
  60. scanf("%s", s);
  61. insert();
  62. }
  63. getfail();
  64.  
  65. int now = ;
  66. for(int i = ; i <= len; i++) {
  67. int c = t[i] - 'a';
  68.  
  69. now = ch[now][c];
  70. id[++tot] = now;
  71. ans[tot] = t[i];
  72.  
  73. if(val[now]) {
  74. tot -= val[now];
  75. now = id[tot];
  76. }
  77. }
  78. for(int i = ; i <= tot; i++) printf("%c", ans[i]);
  79. puts("");
  80. return ;
  81. }

BZOJ3940: [Usaco2015 Feb]Censoring (AC自动机)的更多相关文章

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

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

  2. bzoj 3940: [Usaco2015 Feb]Censoring -- AC自动机

    3940: [Usaco2015 Feb]Censoring Time Limit: 10 Sec  Memory Limit: 128 MB Description Farmer John has ...

  3. 【bzoj3940】[Usaco2015 Feb]Censoring AC自动机

    题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they h ...

  4. [Usaco2015 Feb]Censoring --- AC自动机 + 栈

    bzoj 3940 Censoring 题目描述 FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过10^5的字符串S. 他有一个包含n个单词的列表,列表里的n个单词记为T1......Tn. ...

  5. BZOJ 3940: [Usaco2015 Feb]Censoring AC自动机_栈

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

  6. [BZOJ3940]:[Usaco2015 Feb]Censoring(AC自动机)

    题目传送门 题目描述: FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过105的字符串S.他有一个包含n个单词的列表,列表里的n个单词记为t1…tN.他希望从S中删除这些单词.FJ每次在S中 ...

  7. bzoj3940: [Usaco2015 Feb]Censoring

    AC自动机.为什么洛谷水题赛会出现这种题然而并不会那么题意就不说啦 .终于会写AC自动机判断是否是子串啦...用到kmp的就可以用AC自动机水过去啦 #include<cstdio> #i ...

  8. 【BZOJ3940】[USACO2015 Feb] Censoring (AC自动机的小应用)

    点此看题面 大致题意: 给你一个文本串和\(N\)个模式串,要你将每一个模式串从文本串中删去.(此题是[BZOJ3942][Usaco2015 Feb]Censoring的升级版) \(AC\)自动机 ...

  9. BZOJ 3940: [Usaco2015 Feb]Censoring

    3940: [Usaco2015 Feb]Censoring Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 367  Solved: 173[Subm ...

随机推荐

  1. VMware Workstation安装centos 6.5详细步骤

    转自“http://blog.51cto.com/12496630/2058386” 22.选择分区了,centos新版中使用lvm来分区,我不用过分去计算分区大小,这个模式可以允许用户以后动态调整分 ...

  2. error the @annotation pointcut expression is only supported at Java 5

    eclipse搭建环境后报错 the pointcut is supported at Java 5 错误意思大致是:注释切入点表达式只支持在Java 5版本以上,我就纳闷了我安装的是jdk1.8啊, ...

  3. java形式参数分别是基本类型和引用类型的调用

    什么是形式参数,基本类型,引用类型? 形式参数(形参)百度百科里的解释是:在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数. 通俗的说就是:形式参数是指在函数名后面的小括号里 ...

  4. UVaLive 7456 Least Crucial Node (并查集+暴力 或者 求割点)

    题意:求标号最小的最大割点.(删除该点后,指定点#sink能到达的点数减少最多). 析:由于不知道要去掉哪个结点,又因为只有100个结点,所以我们考虑用一个暴力,把所有的结点都去一次,然后用并查集去判 ...

  5. 基础总结篇之二:Activity的四种launchMode (转载)

    转自:http://blog.csdn.net/liuhe688/article/details/6754323 合抱之木,生於毫末:九層之台,起於累土:千里之行,始於足下.<老子> 今天 ...

  6. 基于puppeteer的网络拦截工具flyover

    为什么需要网络拦截工具 通常我们会遇到这样的场景: 线上一个图片有异常,线下修正之后需要发布之前进行测试,有些情况下,QA同学有直接在线上环境测试的需求,只是链接本地资源,通常在windows下有一个 ...

  7. 洛谷 - P2598 - 狼和羊的故事 - 最大流

    https://www.luogu.org/problemnew/show/P2598 第一次写这种修篱笆的题目,上次好像晓阳dalao写了一个堵人的.好像还有能改变土地属性的. #include&l ...

  8. [转载]OI省选算法汇总

    简单列了一点 1.1 基本数据结构 数组 链表,双向链表 队列,单调队列,双端队列 栈,单调栈 1.2 中级数据结构 堆 并查集与带权并查集 hash 表 自然溢出 双hash 1.3 高级数据结构 ...

  9. DFS系列 POJ(自认为的讲解)

    C - Sum It Up POJ1564 题意: 给你一个N,然后给你一堆数The numbers in each list appear in nonincreasing order, and t ...

  10. bzoj 4698: Sdoi2008 Sandy的卡片【SAM】

    差分之后用SAM求LCS,然后答案就是LCS+1 #include<iostream> #include<cstdio> #include<cstring> usi ...