SAM模板

struct SAM{
static const int maxn = * ;
struct node{
node*nxt[],*fail;
int len;
}; node*root;int cnt;
node no[maxn];
node*newnode(){
return &no[cnt++];
}
SAM(){
cnt = ;
root = newnode();
} node* add(node*p,int c){
node*cur = newnode();
cur->len = p->len+;
while(p &&!p->nxt[c])p->nxt[c] = cur,p = p->fail;
if(!p){
cur->fail = root;return cur;
}
node*q = p->nxt[c];
if(q->len == p->len+){
cur->fail = q;
}else{
node*nq = newnode();
*nq = *q;
nq->len = p->len+;
q->fail = cur->fail = nq;
while(p&&p->nxt[c]==q)p->nxt[c] = nq,p = p->fail;
}
return cur;
} ll getNumOfDistinctSubstrings(){
auto ans = ;
REP(i,,cnt)ans+=no[i].len-no[i].fail->len;
return (ans);
}
};

最新文章

  1. Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
  2. 深入理解js——作用域和上下文环境
  3. dhtmlx相关
  4. P2P资料
  5. iOS中关于.pch的新建与配置问题
  6. [转]windows下安装Object-C开发环境
  7. [转]Uploading and Downloading VHDs to Windows Azure
  8. c语言实现BMP图像转换为灰度图
  9. 第九十九节,JavaScript数据类型
  10. Javascript中Array(数组)对象常用的几个方法
  11. 深度学习框架-caffe安装-Mac OSX 10.12
  12. 豹哥嵌入式好讲堂:ARM Cortex-M调试过程探析(1)- 4线接口标准(JTAG)
  13. 搭建vscode+vue环境
  14. IO流--与properties集合配合使用
  15. DAY15 模块
  16. async和await用法(Task)
  17. 【webGL】
  18. subprocess 子进程模块
  19. Maven for Eclipse 第三章 ——创建和导入 Maven 项目
  20. 别人家的PS系列又来了!!!

热门文章

  1. UPC 2223: A-Number and B-Number(数位DP+二分)
  2. LeetCode OJ——Pascal's Triangle II
  3. nrm+nvm
  4. springboot 启动类启动跳转到前端网页404问题的两个解决方案
  5. Concurrency and Application Design (一)
  6. 邁向IT專家成功之路的三十則鐵律 鐵律二十:IT人證照之道-收斂
  7. ASP复制文件
  8. Linux文件内容查阅
  9. Opencv 最小外接矩形合并拼接
  10. C 标准库 - <locale.h>