思路:

求一发后缀数组,求个LCP 就好了

注意数字有可能不只一位 (样例2)

//By SiriusRen
#include <bits/stdc++.h>
using namespace std;
const int N=;
char s[N];
int cntA[N],cntB[N],A[N],B[N],sa[N],rk[N],tsa[N],ht[N],f[N][];
int n,t,base[N],l[N],r[N];
void SA(){
for(int i=;i<=;i++)cntA[i]=;
for(int i=;i<=n;i++)cntA[s[i]]++;
for(int i=;i<=;i++)cntA[i]+=cntA[i-];
for(int i=n;i;i--)sa[cntA[s[i]]--]=i;
rk[sa[]]=;
for(int i=;i<=n;i++)rk[sa[i]]=rk[sa[i-]]+(s[sa[i]]!=s[sa[i-]]);
for(int l=;rk[sa[n]]<n;l<<=){
memset(cntA,,sizeof(cntA));
memset(cntB,,sizeof(cntB));
for(int i=;i<=n;i++)cntA[A[i]=rk[i]]++,cntB[B[i]=(i+l<=n?rk[i+l]:)]++;
for(int i=;i<=n;i++)cntA[i]+=cntA[i-],cntB[i]+=cntB[i-];
for(int i=n;i;i--)tsa[cntB[B[i]]--]=i;
for(int i=n;i;i--)sa[cntA[A[tsa[i]]]--]=tsa[i];
rk[sa[]]=;
for(int i=;i<=n;i++)rk[sa[i]]=rk[sa[i-]]+(A[sa[i]]!=A[sa[i-]]||B[sa[i]]!=B[sa[i-]]);
}
for(int i=,j=;i<=n;i++){
j=j?j-:;
while(s[i+j]==s[sa[rk[i]-]+j])j++;
ht[rk[i]]=j;
}
}
void init_rmq(){
base[]=-;
for(int i=;i<=n;i++)f[i][]=ht[i],base[i]=base[i>>]+;
for(int j=;j<=;j++)
for(int i=;i+(<<(j-))<=n;i++)
f[i][j]=min(f[i][j-],f[i+(<<(j-))][j-]);
}
int LCP(int x,int y){
if(x==y)return n-x+;
x=rk[x],y=rk[y];
if(x>y)swap(x,y);x++;
int t=base[y-x+];
return min(f[x][t],f[y-(<<t)+][t]);
}
int main(){
while(~scanf("%s",s+)){
long long ans=;n=strlen(s+);
SA(),init_rmq();
scanf("%d",&t);
for(int i=;i<=t;i++)scanf("%d%d",&l[i],&r[i]),ans+=r[i]-l[i]+,l[i]++;
printf("%lld ",ans);
for(int i=;i<=t;i++){
int tmp=min(LCP(l[i-],l[i]),min(r[i]-l[i],r[i-]-l[i-])+);
ans+=(tmp?(int)log10(tmp):)-tmp;
}
printf("%lld\n",ans+t*);
}
}

HDU 4691 后缀数组+RMQ的更多相关文章

  1. hdu 2459 (后缀数组+RMQ)

    题意:让你求一个串中连续重复次数最多的串(不重叠),如果重复的次数一样多的话就输出字典序小的那一串. 分析:有一道比这个简单一些的题spoj 687, 假设一个长度为l的子串重复出现两次,那么它必然会 ...

  2. hdu 3948(后缀数组+RMQ)

    题意:求一个串中有多少不同的回文串. 分析:这一题的关键是如何去重,我表示我现在还没理解为什么这样去重,先放这里过两天再看!! //不同回文子串数目 #include <iostream> ...

  3. hdu 3948 后缀数组

    The Number of Palindromes Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (J ...

  4. 【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过

    题意:UVU形式的串的个数,V的长度规定,U要一样,位置不同即为不同字串 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&am ...

  5. POJ 3693 后缀数组+RMQ

    思路: 论文题 后缀数组&RMQ 有一些题解写得很繁 //By SiriusRen #include <cmath> #include <cstdio> #includ ...

  6. spoj687 REPEATS - Repeats (后缀数组+rmq)

    A string s is called an (k,l)-repeat if s is obtained by concatenating k>=1 times some seed strin ...

  7. HDU 6194 string string string(后缀数组+RMQ)

    string string string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. HDU - 3948 后缀数组+Manacher

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3948 题意:给定一个字符串,求字符串本质不同的回文子串个数. 思路:主要参考该篇解题报告 先按照man ...

  9. HDU2459 后缀数组+RMQ

    题目大意: 在原串中找到一个拥有连续相同子串最多的那个子串 比如dababababc中的abababab有4个连续的ab,是最多的 如果有同样多的输出字典序最小的那个 这里用后缀数组解决问题: 枚举连 ...

随机推荐

  1. [BZOJ3751][NOIP2014]解方程(数学相关+乱搞)

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  2. 序列终结者(bzoj 1521)

    Description 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这 ...

  3. 【进击后端】mongodb入门

    环境:ubuntu 重要字:数据库,集合,记录,字段 api地址:https://docs.mongodb.com/manual/reference/method/db.collection.upda ...

  4. CLR GC

    一.垃圾回收算法 每个应用程序都包含一组根(root),每个根都是一个存储位置,他要么为null,要么指向托管堆的一个对象,类型中定义的静态字段.局部变量.方法参数等都会被认为是根. 垃圾回收器(GC ...

  5. 洛谷 P1566 加等式

    P1566 加等式 题目描述 对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...

  6. Ubuntu 16.04出现Can't open /etc/rc.d/init.d/functions的问题解决

    /etc/rc.d/init.d/functions是CentOS的位置,Ubuntu对应:/lib/lsb/init-functions 参考: https://unix.stackexchange ...

  7. MyBatis实体属性与表的字段不对应的解决方案

    1.通过在查询的SQL语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上,这种方式是通过在SQL语句中定义别名来解决字段名和属性名的映射关系的. ...

  8. Lua:ipairs和pairs的区别

    ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别 1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table ...

  9. Vue2.0生命周期和钩子函数的一些理解

    转自:https://segmentfault.com/a/1190000008010666 前言 在使用vue一个多礼拜后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对于mount ...

  10. 斜率优化专题1——bzoj 1597 [Usaco2008 Mar] 土地购买 题解

    转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24387147 [原题] 1597: [Usaco2008 Mar]土地购买 Time ...