题意

给定一个长度为nnn的母串
q" role="presentation" style="position: relative;">qqq组询问
这个串可以旋转(就是把最后一位丢到最前面这样子)
问这个串以及其旋转的串在给定的串中出现了多少次

Sol

旋转就把它复制一遍接在后面
然后就在samsamsam上匹配
跳parentparentparent树的父亲到最后一个长度大于等于询问串长
然后统计sizesizesize
防止重复算,就标记一下这个点是否算过

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;IL int Input(){RG int x = 0, z = 1; RG char c = getchar();for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);return x * z;
}const int maxn(2e6 + 5);int len[maxn], trans[26][maxn], fa[maxn], tot = 1, last = 1;
int n, q, id[maxn], t[maxn], size[maxn], vis[maxn];
char s[maxn];IL void Extend(RG int c){RG int p = last, np = ++tot;len[last = np] = len[p] + 1, size[np] = 1;while(p && !trans[c][p]) trans[c][p] = np, p = fa[p];if(!p) fa[np] = 1;else{RG int q = trans[c][p];if(len[q] == len[p] + 1) fa[np] = q;else{RG int nq = ++tot;fa[nq] = fa[q], len[nq] = len[p] + 1;for(RG int i = 0; i < 26; ++i) trans[i][nq] = trans[i][q];fa[np] = fa[q] = nq;while(p && trans[c][p] == q) trans[c][p] = nq, p = fa[p];}}
}int main(){scanf(" %s", s), n = strlen(s);for(RG int i = 0; i < n; ++i) Extend(s[i] - 'a');for(RG int i = 1; i <= tot; ++i) ++t[len[i]];for(RG int i = 1; i <= tot; ++i) t[i] += t[i - 1];for(RG int i = 1; i <= tot; ++i) id[t[len[i]]--] = i;for(RG int i = tot; i; --i) size[fa[id[i]]] += size[id[i]];q = Input();for(RG int i = 1, l, tl; i <= q; ++i){scanf(" %s", s + 1), l = strlen(s + 1);for(RG int j = 1; j < l; ++j) s[j + l] = s[j];RG ll ans = 0; tl = l + l;for(RG int j = 1, nw = 1, cnt = 0; j < tl; ++j){while(nw && !trans[s[j] - 'a'][nw]) nw = fa[nw], cnt = len[nw];if(!nw) nw = 1, cnt = 0;else ++cnt, nw = trans[s[j] - 'a'][nw];while(nw && len[fa[nw]] >= l) nw = fa[nw], cnt = len[nw];if(cnt >= l && vis[nw] != i) ans += size[nw], vis[nw] = i;}printf("%lld\n", ans);}return 0;
}

CF235C Cyclical Quest相关推荐

  1. CF235C Cyclical Quest

    题意: 给出一个字符串s: n次询问某个字符串xi的循环同构串在s中出现多少次: |s|,∑|xi|<=10^6,n<=10^5: 题解: WJMZBMR场的SAM题... 感觉还没学多久 ...

  2. Codeforces 235C Cyclical Quest (后缀自动机)

    题目链接: https://codeforces.com/contest/235/problem/C 题解: 对大串建后缀自动机 对询问串复制拆环.这里一定要注意是复制一个循环节不是复制整个串!循环节 ...

  3. CodeForces 235C Cyclical Quest (后缀自动机)

    题意:给一个主串,再给出多个模式串,分别求主串中有多少个连续子串,与模式串循环同构. 题解:后缀自动机 因为要求循环同构,所以将模式串复制放到后面.(要么加终止符,要么传入长度) 先对主串建sam,然 ...

  4. Codeforces #235 C.Cyclical Quest(后缀自动机)

    传送门 题意:给定一个模式串和nnn个匹配串,询问原串有多少个子串和匹配串循环同构 考虑要求循环同构,于是先对SSS建出后缀自动机 把每次询问的XXX倍长在自动机上跑 如果当前匹配的长度已经超过原串长 ...

  5. 2020.6月做题记录

    长期计划 SAM专题 date:2020.05.21-2020.06.01 基础类: Problem Finished P3804 [模板]后缀自动机 (SAM) √√√ SP1811 LCS - L ...

  6. poj 1904 King's Quest

    King's Quest 题意:有N个王子和N个妹子;(1 <= N <= 2000)第i个王子喜欢Ki个妹子:(详见sample)题给一个完美匹配,即每一个王子和喜欢的一个妹子结婚:问每 ...

  7. 独家 | 使用深度神经网络在Oculus Quest上进行准确的手部追踪

    作者:Shangchen Han, Beibei Liu, Tsz Ho Yu, Randi Cabezas, Peizhao Zhang, Peter Vajda, Eldad Isaac, and ...

  8. Google Quest 冠军访谈:3个秘诀,8条建议,还有人在华为做 NLP 研究员

    导语:谷歌 QUEST Q&A 标签竞赛冠军方案. Anna Vander Stel 发布在 Unsplash 上的照片 近日,由 Google 举办的 Quest 问答标签大赛结果出炉,由 ...

  9. 阐述 QUEST CENTRAL FOR DB2 八罪

    作为一个从事oracle plsql发展2猿 - 年计划,现在,在退出DB2数据仓库项目. 同PL/SQL Developer参考,下文PLSQL,阐述QUEST CENTRAL FOR DB2 5. ...

  10. [XMAN2018排位赛]Dragon Quest [MRCTF2020]VirtualTree

    文章目录 [XMAN2018排位赛]Dragon Quest 拖入ida v5 = start_quest((std::string *)v7); sanitize_input(v6); 核心代码1 ...

最新文章

  1. [转] 电子技术·笔记1(9月份)
  2. 错误: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
  3. print打印字符串之谜
  4. Windows 2003 系统管理 视频教程 http://www.91xueit.comm 下载
  5. php恒等符,php学习笔记(三)操作符与控制结构
  6. 程序员必知8大排序3大查找(一)
  7. 刘庆敏 博客linux,Linux内核源码分析--zImage出生实录(Linux-3.0 ARMv7)
  8. [Python+sklearn] 拆分数据集为训练和测试子集 sklearn.model_selection.train_test_split()
  9. js系列教程2-对象、对象属性全解
  10. android 判断资源是否使用6,android-download-manager – Android 6获取下载文件的路径
  11. 用逻辑回归实现图像识别
  12. JavaSE基础——GUI编程(AWT)
  13. 【记住密码】vue项目实现记住密码功能
  14. mathcad15安装方法(解决了认证错误问题)
  15. DIY NAS硬件选择
  16. 软件项目管理大作业:项目内容介绍
  17. 《IT行业职位介绍-搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别》
  18. 项目经理必备向上管理四步法
  19. 【论文笔记】在CommonsenseQA 上追平人类: 通过External Attention 增强 Self-Attention
  20. 用Ps制作网页展示总结

热门文章

  1. c语言cmp函数含义,【C艹】关于sort用法之重构cmp(comp)函数的笔记
  2. html5 电子白板 直播,基于HTML5的电子白板的设计与实现
  3. 罗斯柴尔德家族与人类的四次战争
  4. amos看拟合度在哪里看_Amos软件完结篇!模型无法拟合,拟合指标不佳如何解决?...
  5. Android 强制指定录音声卡
  6. CentOS 7 安装微信小程序开发工具
  7. 微信开发者工具通过二维码编译步骤
  8. 如何清理 WinSxS 文件夹-2022版
  9. 遥感影像镶嵌及实现(四)
  10. NVIDIA Tegra Xavier 刷机以及pytorch安装