题面

Vjudge
题意:给定一个串,每次询问l~r组成的子串的不同子串个数

题解

看到字符串的大小很小
而询问数太多
所以我们预处理任意的答案

枚举左端点,依次向右加入新节点
直接统计答案即可

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define MAX 2222
inline int read()
{int x=0,t=1;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=-1,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return x*t;
}
int ans[MAX][MAX];
int last,tot;
char ch[MAX];
struct Node
{int son[26];int ff,len;
}t[MAX<<1];
void init()
{last=tot=1;memset(t,0,sizeof(t));
}
void extend(int c)
{int p=last,np=++tot;last=np;t[np].len=t[p].len+1;while(p&&!t[p].son[c])t[p].son[c]=np,p=t[p].ff;if(!p)t[np].ff=1;else{int q=t[p].son[c];if(t[q].len==t[p].len+1)t[np].ff=q;else{int nq=++tot;t[nq]=t[q];t[nq].len=t[p].len+1;t[np].ff=t[q].ff=nq;while(p&&t[p].son[c]==q)t[p].son[c]=nq,p=t[p].ff;}}
}
int main()
{int T=read();while(T--){scanf("%s",ch+1);for(int i=1,l=strlen(ch+1);i<=l;++i){init();for(int j=i;j<=l;++j){extend(ch[j]-97);ans[i][j]=ans[i][j-1]+t[last].len-t[t[last].ff].len;}}int Q=read();while(Q--){int l=read(),r=read();printf("%d\n",ans[l][r]);}}return 0;
}

【HDU4622】Reincarnation(后缀自动机)相关推荐

  1. HDU - 4622 Reincarnation(后缀自动机-查询区间本质不同子串个数)

    题目链接:点击查看 题目大意:给出一个长度为 n 的字符串,再给出 q 个询问,每次询问需要回答区间 [ l , r ] 内有多少个本质不同的子串 题目分析:和回文自动机那个题目一样,n * n 预处 ...

  2. HDU4622(后缀自动机)

    题目:Reincarnation 题意:给定一个字符串,然后再给定Q个询问,每个询问是一个区间[l,r],问在这个字符串区间中有多少个不同的子串. 后缀自动机模版题: #include <ios ...

  3. 【POJ1509】Glass Beads 【后缀自动机】

    题意 给出一个字符串,求它的最小表示法. 分析 这个题当然可以用最小表示法做啦!但是我是为了学后缀自动机鸭! 我们把这个字符串长度乘二,然后建SAM,然后在SAM上每次跑最小的那个字母,找出长度为n的 ...

  4. bzoj 2946 [Poi2000]公共串——后缀自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2946 对每个串都建一个后缀自动机,然后 dfs 其中一个自动机,记录同步的话在别的自动机上走 ...

  5. 后缀自动机 ---- P3804 【模板】后缀自动机(求每个等价类最长串的出现次数)

    后缀自动机一些关键点 首先后缀自动机上面每个节点都是一个等价类并且是最长的字符串的结尾 后缀自动机上的fail链反建就是parent tree,下面是SAM和Parent tree的构造 对于这道模板 ...

  6. 洛谷P3966 [TJOI2013]单词(后缀自动机)

    传送门 统计单词出现次数--为啥大家都是写AC自动机的嘞--明明后缀自动机也能做的说-- 统计出现次数这个就直接按长度排序然后做个dp就好,这是SAM的板子的要求啊,不提了 然后考虑怎么让所有串之间隔 ...

  7. hihocoder 后缀自动机专题

    一.后缀自动机基本概念的理解 1.首先后缀自动机的状态是由子串的endpos来决定的 子串的endpos是指一个子串可以在原字符串的哪些位置进行匹配, endpos构成的不同集合划分成不同的状态 关于 ...

  8. BZOJ3998: [TJOI2015]弦论(后缀自动机,Parent树)

    Description 对于一个给定长度为N的字符串,求它的第K小子串是什么. Input 第一行是一个仅由小写英文字母构成的字符串S 第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个. ...

  9. 从零开始の后缀自动机

    后缀自动机,一个处理字符串问题的神器.听起来很神圣,貌似很难写.其实代码实现并不复杂,萌新估计都能学会. 以前听学长们讲过好多次也看过陈立杰的课件,都不是很明白.今天终于弄明白了,就写一个让大家都能看 ...

  10. 【BZOJ3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机

    [BZOJ3926][Zjoi2015]诸神眷顾的幻想乡 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝 ...

最新文章

  1. 浅析Struts 体系结构与工作原理(图)
  2. tomcat在服务器上改了8080的端口之后所带来的问题
  3. 回文字符串(Palindromic_String)
  4. 华为服务器bmc默认地址_智能数据中心和智慧园区:华为的单点突破与全局效应...
  5. 【S4 导数据】S/4HANA导数,只会LSMW远远不够(转)
  6. mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解
  7. JAVA解析存储过程获取的对象_java 解析数据的存储过程的
  8. 关于浮点数和字符串转换的函数示例
  9. jquery请求后台数据(get请求)
  10. oracle登录总结
  11. MongoDB Sharding 机制分析
  12. python最速下降法
  13. cass坡度土方计算案例_南方cass几种土石方计算方法分析.doc
  14. 一完整的HTTP事务是怎样的过程
  15. 台式电脑怎么组装步骤_台式电脑怎么组装 U大侠分享组装台式机的具体步骤
  16. 『论文笔记』Visually Grounded Reasoning across Languages and Cultures
  17. 2021-2027全球与中国双联式过滤器外壳市场现状及未来发展趋势
  18. 微型计算机故障分为哪几类,西南大学19秋[0240] 计算机维修技术在线作业
  19. 用@ExceptionHandler 来进行异常处理
  20. 清华一日游-恰逢清华大学99周年校庆

热门文章

  1. Learning a Proposal Classifier for Multiple Object Tracking
  2. 有趣的算法:捞鱼问题
  3. 小工程结算书范本_工程结算书范本.doc
  4. android跳转到rn界面,第五章 RN与Native—由原生页面跳转到Rn页面;在Rn页面调用Android Native组件和Native数据...
  5. Java @Min(0)的意义
  6. Android 控件数组
  7. ★另人无比怀念的90年代动画片★ ‖最终整理篇‖
  8. [node]request+watch开发自测的懒人神器
  9. uc缓存分段视频合并
  10. 陆探一号-中国-2022