题目链接:戳我

因为对应的很多询问,所以我们一定要将每一种询问先处理出来,然后O(1)查询。

至于怎么处理出来子串的子串呢?

我们固定左端点,然后依次加入子串即可。然后统计的时候直接统计last那一个类的即可(因为只有last是真正新建出来的节点,多出来的本质不同的子串也是出现在这里面的),我们直接\(t[i].longest-t[i].shortest+1=t[i].len-t[t[i].ff].len\)即可。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 2010
using namespace std;
int last=1,tot=1,T,len,n,m;
int ans[MAXN][MAXN];
char s[MAXN];
struct Node{int len,ff,ch[26];}t[MAXN<<1];
inline void extend(int c)
{int p=last,np=++tot;last=np;t[np].len=t[p].len+1;while(p&&!t[p].ch[c]) t[p].ch[c]=np,p=t[p].ff;if(!p) t[np].ff=1;else{int q=t[p].ch[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].ch[c]==q) t[p].ch[c]=nq,p=t[p].ff;}}
}
int main()
{#ifndef ONLINE_JUDGEfreopen("ce.in","r",stdin);#endifscanf("%d",&T);while(T--){memset(ans,0,sizeof(ans));last=tot=1;scanf("%s",s+1);len=strlen(s+1);for(int i=1;i<=len;i++){memset(t,0,sizeof(t));tot=last=1;for(int j=i;j<=len;j++){extend(s[j]-'a'+1);ans[i][j]=ans[i][j-1]+t[last].len-t[t[last].ff].len;}}scanf("%d",&m);for(int i=1;i<=m;i++){int l,r;scanf("%d%d",&l,&r);printf("%d\n",ans[l][r]);}}return 0;
}

转载于:https://www.cnblogs.com/fengxunling/p/10749999.html

HDU4622 Reincarnation相关推荐

  1. HDU4622(后缀自动机)

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

  2. hdu 4622 Reincarnation SAM模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 题意:给定一个长度不超过2000的字符串,之后有Q次区间查询(Q <= 10000),问区 ...

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

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

  4. 操作系统,看这一篇足够了!

    [注]多谢原著作者 文章主要结构图如下 操作系统 现代计算机系统由一个或多个处理器.主存.打印机.键盘.鼠标.显示器.网络接口以及各种输入/输出设备构成. 然而,程序员不会直接和这些硬件打交道,而且每 ...

  5. 整合rpc远程调用_远程过程调用(RPC)

    分布式系统的主要特点是能够将一台机器上的一个任务分解到系统中其他的机器上运行,实现多个CPU的协同工作.远程过程调用RPC就是实现这一特点的有效方法之一 1.什么是RPC RPC的基本思想 (1984 ...

  6. 操作系统的极简教程(二)

    操作系统博物馆 操作系统已经存在了大半个世纪,在这段时期内,出现了各种类型的操作系统,但并不是所有的操作系统都很出名,下面就罗列一些比较出名的操作系统 大型机操作系统 高端一些的操作系统是大型机操作系 ...

  7. 【IT资讯】华为“鸿蒙”所涉及的微内核究竟是什么

    00. 目录 文章目录 00. 目录 01. 什么是微内核 02. 微内核的发展历史 03. 其他的微内核系统:Fuchsia,Minix 04. 微内核的优缺点 01. 什么是微内核 微内核设计的基 ...

  8. 【2019icpc南京站网络赛 - H】Holy Grail(最短路,spfa判负环)

    题干: As the current heir of a wizarding family with a long history,unfortunately, you find yourself f ...

  9. 以史为鉴 | 为什么要将「知识图谱」追溯到1956年?

    本文转载自公众号:AI科技评论. 作者 | Claudio Gutierrez  编译 | MrBear 编辑 | Tokai 以史为鉴,可以知兴替.纵观近期包括 AAAI.NeurIPS.IJCAI ...

  10. 鸿蒙操作系统用的微内核到底是什么?

    作者 | RT-Thread 责编 | 伍杏玲 [CSDN 编者按]安卓系统是宏内核,而最近热议的华为鸿蒙操作系统是微内核.什么是微内核?微内核是如何发展?其优缺点是什么呢?一起来看看吧. 背景庞大的 ...

最新文章

  1. Siebel Admin: Siebel task manager commands
  2. celeba数据集_人脸识别常用数据集介绍(附下载链接)及常用评估指标
  3. 一个SAP成都研究院开发工程师 2020 年的所有文章列表
  4. eshop.sql(复制的时候注意路径!!!)
  5. Qt文档阅读笔记-Timer QML Type 官方解析与实例
  6. 河北体检系统诚信企业推荐_海南膜结构停车棚加工厂诚信企业推荐
  7. Mac上最佳的SVN管理工具:Cornerstone
  8. osip和mysql_osip2和eXosip2协议
  9. 好用的jquery选择器
  10. 小前端眼里的大前端:GMTC 2018 参会小结
  11. SparkSession对象
  12. 100道初级网络工程师测试题
  13. html+游戏转盘,javascript+HTML5 Canvas绘制转盘抽奖
  14. 汇率,汇率接口,汇率行情数据
  15. 股权转让项目:沈阳派尔化学有限公司55%股权转让
  16. 少儿编程 中国电子学会scratch等级考试一级历年真题解析【已更新至2023年3月 持续更新】
  17. 途家、木鸟、美团……民宿暑期战事将起
  18. python控制浏览器脚本_Chrome 33+浏览器 Cookies encrypted_value解密脚本(python实现)...
  19. win7系统wifi没有网络连接到服务器,Win7无线Wifi无法连接怎么办?win7系统Wifi无法连接的三种故障原因及解决方法...
  20. IT服务管理之能力管理

热门文章

  1. html,js实现对联广告
  2. 走进JavaWeb技术世界11:单元测试框架Junit
  3. 如何使用计算机远程电脑,远程控制电脑,教您如何远程控制电脑
  4. 微信网页PC端登录扫二维码登录
  5. Gerrit报错:Permission denied (publickey)
  6. python直接使用大括号生成_Python 解析式、生成器
  7. font-style 属性 oblique 是什么意思
  8. mysql一文整理汇总
  9. 计算几何专项:UVa 12307
  10. pdfbox / XSL + FOP 转换 PDF文档