LINK:Sevenk Love Oimaster

询问一个模式串在多少个文本串中出现过。

考虑广义SAM 统计这种数量问题一般有三种做法。

一种 暴力bitset 这道题可能可以过?

一种 暴力跳parent 复杂度多乘根号。

一种 线段树合并 乘个log.

最简便的 不容易T的首选第二种方法。

  1. const int MAXN=100010<<1;
  2. int n,m;
  3. int last=1,cnt=1;
  4. int vis[MAXN],sum[MAXN];
  5. char a[MAXN];
  6. struct wy
  7. {
  8. int ch[26];
  9. int fa,len;
  10. }t[MAXN];
  11. inline int insert(int x)
  12. {
  13. int p=last;
  14. if(t[p].ch[x])
  15. {
  16. int q=t[p].ch[x];
  17. if(len(q)==len(p)+1)return last=q;
  18. int nq=++cnt;
  19. t[nq]=t[q];
  20. vis[nq]=vis[q];sum[nq]=sum[q];
  21. len(nq)=len(p)+1;
  22. f(q)=nq;
  23. while(p&&t[p].ch[x]==q)
  24. {
  25. t[p].ch[x]=nq;
  26. p=f(p);
  27. }
  28. return last=nq;
  29. }
  30. int np=last=++cnt;
  31. len(np)=len(p)+1;
  32. while(p&&!t[p].ch[x])
  33. {
  34. t[p].ch[x]=np;
  35. p=f(p);
  36. }
  37. if(!p)f(np)=1;
  38. else
  39. {
  40. int q=t[p].ch[x];
  41. if(len(q)==len(p)+1)f(np)=q;
  42. else
  43. {
  44. int nq=++cnt;
  45. t[nq]=t[q];
  46. len(nq)=len(p)+1;
  47. f(np)=f(q)=nq;
  48. vis[nq]=vis[q];sum[nq]=sum[q];
  49. while(p&&t[p].ch[x]==q)
  50. {
  51. t[p].ch[x]=nq;
  52. p=f(p);
  53. }
  54. }
  55. }
  56. return last;
  57. }
  58. int main()
  59. {
  60. freopen("1.in","r",stdin);
  61. gt(n);gt(m);
  62. rep(1,n,i)
  63. {
  64. gc(a);last=1;
  65. int len=strlen(a+1);
  66. rep(1,len,j)
  67. {
  68. insert(a[j]-'a');
  69. int w=last;
  70. while(w&&vis[w]!=i)vis[w]=i,++sum[w],w=f(w);
  71. }
  72. }
  73. rep(1,m,i)
  74. {
  75. gc(a);int p=1;
  76. int len=strlen(a+1);
  77. rep(1,len,j)p=t[p].ch[a[j]-'a'];
  78. put(sum[p]);
  79. }
  80. return 0;
  81. }

bzoj 2780 [Spoj]8093 Sevenk Love Oimaster的更多相关文章

  1. 三种做法:BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster

    目录 题意 思路 AC_Code1 AC_Code2 AC_Code3 参考 @(bzoj 2780: [Spoj]8093 Sevenk Love Oimaster) 题意 链接:here 有\(n ...

  2. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )

    全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries ...

  3. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster [广义后缀自动机]

    JZPGYZ - Sevenk Love Oimaster     Oimaster and sevenk love each other.       But recently,sevenk hea ...

  4. 【刷题】BZOJ 2780 [Spoj]8093 Sevenk Love Oimaster

    Description Oimaster and sevenk love each other. But recently,sevenk heard that a girl named ChuYuXu ...

  5. bzoj 3277 串 && bzoj 3473 字符串 && bzoj 2780 [Spoj]8093 Sevenk Love Oimaster——广义后缀自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3277 https://www.lydsy.com/JudgeOnline/problem.p ...

  6. bzoj 2780: [Spoj]8093 Sevenk Love Oimaster(广义SAM)

    题目大意:给出n个原串,再给出m个查询串.求每个查询串出现在了多少原串中. 题解 直接对原串建一个广义SAM,然后把每一个原串放到SAM上跑一跑,记录一下每一个状态属于多少个原串,用$size$表示. ...

  7. BZOJ 2780 [Spoj]8093 Sevenk Love Oimaster ——广义后缀自动机

    给定n个串m个询问,问每个串在n个串多少个串中出现了. 构建广义后缀自动机,(就是把所有字符串的后缀自动机合并起来)其实只需要add的时候注意一下就可以了. 然后对于每一个串,跑一边匹配,到达了now ...

  8. bzoj 2780: [Spoj]8093 Sevenk Love Oimaster【广义SAM】

    AC自动机比较简单,把询问串做成AC自动机然后模板串边跑变更新即可 SAM是把模板串做成广义SAM,然后每个节点存有几个模板串经过,具体方法是每次更新暴力向上跳直到有时间戳我不会证为什么时间复杂度是对 ...

  9. 【BZOJ2780】[Spoj]8093 Sevenk Love Oimaster 广义后缀自动机

    [BZOJ2780][Spoj]8093 Sevenk Love Oimaster Description Oimaster and sevenk love each other.     But r ...

随机推荐

  1. videojs兼容ie8

    从网上找到很多这个videojs兼容ie8的解决方案,一个一个的试,最后发现没有一个是靠谱的.我好无奈啊…… 先看图(ie上访问必须是线上地址) 看代码: <!DOCTYPE html> ...

  2. 状压DP之Mixed Up Cows G

    题目 传送们 大意 约翰家有N头奶牛,第i头奶牛的编号是Si,每头奶牛的编号都是唯一的.这些奶牛最近 在闹脾气,为表达不满的情绪,她们在挤奶的时候一定要排成混乱的队伍.在一只混乱的队 伍中,相邻奶牛的 ...

  3. Azure Web App (一)发布你的Net Core Web 项目

    一,引言 今天我们看一下Azure上的一个服务-----Web 应用,我们都知道云计算的三大模式:Iaas(基础设施即服务),Paas(平台即服务),Saas(软件即服务). Iass,其实就是虚拟主 ...

  4. Error: error getting chaincode bytes: failed to calculate dependencies报错解决办法

    Error: error getting chaincode bytes: failed to calculate dependencies: incomplete package: github.c ...

  5. 前端05 /js基础

    前端05 /js基础 昨日内容回顾 css选择器的优先级 行内(1000) > id(100) > 类(10) > 标签(1) > 继承(0) 颜色 rgb(255,255,2 ...

  6. nodejs之数据库连接

    nodejs 对 MySQL.mongodb.redis 数据库的连接方式. MySQL: var mysql = require('mysql') var { MYSQL } = require(' ...

  7. 从连接器组件看Tomcat的线程模型——NIO模式

    Tomcat8之后,针对Http协议默认使用org.apache.coyote.http11.Http11NioProtocol,也就是NIO模式.通过之前的博客分析,我们知道Connector组件在 ...

  8. C# 泛型中的数据类型判定与转换

    提到类型转换,首先要明确C#中的数据类型,主要分为值类型和引用类型: 1.常用的值类型有:(struct) 整型家族:int,byte,char,short,long等等一系列 浮点家族:float, ...

  9. CSS3伪类 :empty

    :empty 种类:伪类选择器 版本:CSS3.0 用法:匹配每个没有子元素(包含文本)的元素. 例子: <!DOCTYPE html> <html> <head> ...

  10. 写给程序员的机器学习入门 (八) - 卷积神经网络 (CNN) - 图片分类和验证码识别

    这一篇将会介绍卷积神经网络 (CNN),CNN 模型非常适合用来进行图片相关的学习,例如图片分类和验证码识别,也可以配合其他模型实现 OCR. 使用 Python 处理图片 在具体介绍 CNN 之前, ...