题目链接
广义sam。。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1000010;
struct SAM{int ch[26];int len, fa;
}sam[MAXN << 1];
int las = 1, cnt = 1, v[MAXN << 1], sz[MAXN << 1];
int len[MAXN], tot, n, m;
inline void add(int c){int p = las; int np = las = ++cnt;sam[np].len = sam[p].len + 1;for(; p && !sam[p].ch[c]; p = sam[p].fa) sam[p].ch[c] = np;if(!p) sam[np].fa = 1;else{int q = sam[p].ch[c];if(sam[q].len == sam[p].len + 1) sam[np].fa = q;else{int nq = ++cnt; sam[nq] = sam[q];sam[nq].len = sam[p].len + 1;sam[q].fa = sam[np].fa = nq;for(; p && sam[p].ch[c] == q; p = sam[p].fa) sam[p].ch[c] = nq;}}
}
char a[MAXN];
void update(int x, int y){for(; x && v[x] != y; x = sam[x].fa){v[x] = y; ++sz[x];}
}
int ans;
int main(){scanf("%d%d", &n, &m); getchar();for(int i = 1; i <= n; ++i){las = 1;char ch;while((ch = getchar()) != '\n') add(a[++tot] = ch - 'a'), ++len[i];}tot = 0;for(int i = 1; i <= n; ++i)for(int j = 1, x = 1; j <= len[i]; ++j)update(x = sam[x].ch[a[++tot]], i);for(int i = 1; i <= m; ++i){ans = 0; int p = 1;scanf("%s", a);int len = strlen(a);for(int j = 0; j < len; ++j)if(sam[p].ch[a[j] - 'a'])p = sam[p].ch[a[j] - 'a'];else{ans = -1;break;}if(ans) ans = 0;else ans = sz[p];printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/Qihoo360/p/11030049.html

【洛谷 SP8093】 JZPGYZ - Sevenk Love Oimaster(后缀自动机)相关推荐

  1. SP8093 JZPGYZ - Sevenk Love Oimaster(广义SAM)

    SP8093 JZPGYZ - Sevenk Love Oimaster(广义SAM) 思路:广义 S A M SAM SAM构建文本串,然后用以一个 s z [ p ] sz[p] sz[p]表示状 ...

  2. 【洛谷 P3975】 [TJOI2015]弦论(后缀自动机)

    题目链接 建出后缀自动机. T=0,每个子串算一次,否则每个子串算该子串的\(endpos\)集合大小次. 用\(f[i]\)表示结点\(i\)表示的\(endpos\)集合大小,则\(f[i]\)为 ...

  3. 洛谷 P4070 [SDOI2016]生成魔咒 后缀自动机

    题目描述 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔咒串 [1,2]. 一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒. 例如 S=[1, ...

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

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

  5. 洛谷P2463 Sandy的卡片【后缀数组】【二分】

    题目描述 Sandy和Sue的热衷于收集干脆面中的卡片. 然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型. 每一张卡片都由一些数字进行标记,第i张卡片的 ...

  6. 洛谷P2178 [NOI2015]品酒大会 后缀数组+单调栈

    P2178 [NOI2015]品酒大会 题目链接 https://www.luogu.org/problemnew/show/P2178 题目描述 一年一度的"幻影阁夏日品酒大会" ...

  7. 洛谷P4094 [HEOI2016/TJOI2016]字符串【后缀数组+主席树+st表】

    时空限制 2000ms / 256MB 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为n的字符串s,和m个问题.佳媛姐姐必须正确 ...

  8. 洛谷P2463 [SDOI2008]Sandy的卡片(后缀数组SA + 差分 + 二分答案)

    题目链接:https://www.luogu.org/problem/P2463 [题意] 求出N个串中都出现的相同子串的最长长度,相同子串的定义如题:所有元素加上一个数变成另一个,则这两个串相同,可 ...

  9. 【BZOJ2780】【SPOJ】Sevenk Love Oimaster(广义后缀自动机)

    Description 有n个大串和m个询问,每次给出一个字符串s询问在多少个大串中出现过. Solution 广义后缀自动机入门题. 其实就是在插入一个串后将last设为root即可. 然后统计每个 ...

  10. 洛谷P3763 [Tjoi2017]DNA 【后缀数组】

    题目链接 洛谷P3763 题解 后缀数组裸题 在BZOJ被卡常到哭QAQ #include<algorithm> #include<iostream> #include< ...

最新文章

  1. C#验证子网掩码的正确性
  2. 波卡链Substrate (6)SubstrateUI界面
  3. 深圳40K都招不到嵌入式开发人员?
  4. c51单片机c语言交通灯的程序设计,基于51单片机的交通灯设计(三)-编写c51程序
  5. eplan和西门子plc的对接_基于EPLAN的西门子电路图高效设计
  6. 物联网通信技术-概述
  7. SAP在阿里云白皮书-第二章 阿里云概念解析
  8. 这两天用鸿蒙开发板做了个“自动门锁”
  9. FATAL: License file expired:金仓数据库过期了...
  10. Midjourney:一步一步教你如何使用 AI 绘画 MJ
  11. php获取蓝凑云文件列表,PHP获取蓝奏云直链方法
  12. java多线程运行结果写入文件错误java.io.IOException: Stream closed
  13. Amdahl定律(最直观理解)
  14. EMC Navisphere AGENT(NAVIAGENT) 安装日志
  15. Android Rom修改制作工具软件集合
  16. 【强化学习论文合集】十六.2019AAAI人工智能大会论文(AAAI2019)
  17. 从零开始搭建自己的个人博客 ---> 手把手教你搭建自己的炫酷博客
  18. backdoor Authorized Persons Only (修改cookie)
  19. WinPcap代码下载
  20. php微信支付测试开发(流程已通)

热门文章

  1. 【通信】基于matlab多径衰落信道仿真【含Matlab源码 338期】
  2. java xsi type_java – JAXB – 如何根据XML值设置XML元素的xsi:type?
  3. python财经数据接口工具有哪些_Python财经数据接口包TuShare的使用
  4. python:sklearn 标签编码(LabelEncoder)
  5. 纵坐标是横的还是竖的_通感在书法“竖”中的运用,详解竖的知识和技法(硬笔为例)...
  6. php模拟登陆正方教务系统csdn,curl模拟登陆正方教务系统查成绩,出现Object moved to here,已登陆首页获取cookie...
  7. php接收url的json,api-php中url接收的json数据,json_decode为空
  8. 24c存储器读写软件_必知必会-存储器层次结构
  9. CODING Pages 服务全面升级,更快更稳更可靠!
  10. busybox的使用