博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SPOJ705]不同的子串
阅读量:4488 次
发布时间:2019-06-08

本文共 596 字,大约阅读时间需要 1 分钟。

题目描述】

给定一个字符串,计算其不同的子串个数。

【输入格式】

一行一个仅包含大写字母的字符串,长度<=50000

【输出格式】

一行一个正整数,即不同的子串个数。

【样例输入】

ABABA

【样例输出】

9

 

题解:

显然后缀可以是一个子串,然后后缀中可能包含多个子串。

我们考虑不重复统计,容易发现 一个后缀的贡献为L-high[i]+1

因为high[i]之前的显然可以在后面的串中被统计到,所以可以避免重复

 

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 const int N=50005; 9 char s[N];int n,k,rk[N],sa[N],tmp[N],high[N];10 bool comp(int i,int j){11 if(rk[i]!=rk[j])return rk[i]

 

转载于:https://www.cnblogs.com/Yuzao/p/7172277.html

你可能感兴趣的文章
linux中tomcat内存溢出解决办法 分类: 测试 ...
查看>>
jQuery $.each用法
查看>>
[Luogu 3902]Increasing
查看>>
clear语句处理不同类型的数据结果
查看>>
HDU 6118 度度熊的交易计划(费用流)
查看>>
UrlEncode编码/UrlDecode解码使用方法
查看>>
使用ubuntu作为web开发环境的一些感受
查看>>
easyui-datagrid 自适应列宽问题
查看>>
OO第一次总结
查看>>
VS2012发布网站详细步骤
查看>>
文件下载隐匿执行
查看>>
【导图控】各软件开发版本详解
查看>>
HDU 1533 Going home
查看>>
Extjs面板和布局初探
查看>>
箭头函数
查看>>
SharePoint【ECMAScript对象模型系列】-- 11. Enable/Disable Ribbon上的Button
查看>>
C#委托-怎样理解C#中“委托”的含义和用途
查看>>
Spring数据访问1 - 数据源配置及数据库连接池的概念
查看>>
setting.xml配置详解
查看>>
工作笔记——使用Jest时遇到的一些问题
查看>>