摘要: 考虑两一个暴力 1 因为询问$[a,b]$可以拆成$[1,b]$ $[1,a 1]$所以把询问离线,然后就是求$[1,x]$中被$S_i$包含的串的数量。考虑当$[1,x 1] [1,x]$时我们把$S_x$结束节点在fail树的子树加1。然后询问就是求$S_i$在AC自动机上跑时经过所有点的点权用 阅读全文
posted @ 2019-01-07 21:43 Xu-daxia 阅读(210) 评论(0) 推荐(0) 编辑
摘要: ~~SAM+线段树合并的裸题。~~ 但我们讨论AC自动机的做法。 先建出AC自动机。考虑询问在[a,b]中出现的次数就是$[1,b]$的出现次数 $[1,a 1]$的出现次数。把询问离线。然后我们要求的就是第i个字符串在$[1,x]$中出现次数。我们在从$[1,x 1]$到$[1,x]$的过程中把$ 阅读全文
posted @ 2019-01-07 21:22 Xu-daxia 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 建立AC自动机然后,加入一个串之后考虑这个串的贡献。我们把这个串扔到AC自动机里面跑。最后对经过每一个点到的这个点在fail树的根的路径上的点有1的贡献。求链的并,我们把这些点按DFS序排序,然后把每一个点加1,每个点与上一个点的LCA 1,然后询问时的答案就是子树和这个用树状数组维护就行。至于为什 阅读全文
posted @ 2019-01-07 21:12 Xu-daxia 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 建出Trie树然后求出一个点子树中有多少笔名和真名。然后贪心匹配即可。 cpp include include include include include using namespace std; const int N=810000; int ans,n; char s[N]; struct 阅读全文
posted @ 2019-01-07 21:03 Xu-daxia 阅读(140) 评论(0) 推荐(0) 编辑