codeforces GYM 101431B (后缀数据结构)
Problem B. Vera and Banquet
后缀数据结构
GYM
题目链接
题目大意
给出长度为N的字符串,围成一个圈。可以顺时针或逆时针取出子串。问,有多少种不同的子串?
数据范围:2≤N≤500002 \le N \le 50000 字符只包含小写字母
解答
求一个字符串的子串种类,是经典问题了,后缀数组和后缀自动机均可做。
加上圈的条件,如果只是顺时针,可以copy一遍,统计长度≤N\le N 的种类。
对于逆时针,在copy一遍的基础上,对称过去,中间加一个特殊字符。
所以,最后就是对一个长度为4∗N+14*N+1的字符串做后缀数组或后缀自动机,计算长度≤N\le N 的种类并减去包含中间特殊字符的字符串种类(这个比较好算,包含特殊字符的子串都没有重复,可以直接算)。
如果包含特殊字符的长度是len,那么该长度就有len种子串(特殊字符分别放在位置1..len处)
所以包含特殊字符的子串是1+2+...+N=N∗(N+1)21+2+...+N=\frac{N*(N+1)}{2}种
我的做法是用后缀自动机,建完自动机后,结点有cnt个,start结点的编号是1。
最终公式如下:
Ans=\sum_{i=start+1}^{cnt}(min(val[i],n)-min(val[par[i]],n)) - \frac{N*(N+1)}{2}
AC代码 (后缀自动机)
如果用后缀数组的话,公式也是类似的,改一下就可以了。
Ans=\sum_{i=1}^{4*N+1}(min(4*N+1-sa[i]+1,n)-min(hei[i],N)) - \frac{N*(N+1)}{2}
AC代码 (后缀数组)
codeforces GYM 101431B (后缀数据结构)相关推荐
- Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...
- Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)
Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...
- [Codeforces Gym 101651/100725B] Banal Tickets
Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...
- Vasya and Good Sequences (Codeforces Round #512) 后缀和
Vasya and Good Sequences (Codeforces Round #512) 后缀和 嘛,蒟蒻第一次写blog,也是第一次用c++好好写程序,多多关照吧 原题: Vasya可以将一 ...
- Gym 101431B Vera and Banquet (后缀数组)
题目链接 一个环形的字符串,求本质不同子串数目,顺逆时针皆可. 顺时针直接复制一遍,统计长度不超过n的种类:逆时针就翻转过来再复制一遍,统计长度不超过n的种类.因此搞到一起就是把串复制一遍再对称过去, ...
- Codeforces gym 2013-2014 Samara SAU ACM ICPC Quarterfinal Qualification Contest
题目地址:http://codeforces.com/gym/100247 2014.10.27版 26号训练的题,今天发现A题有更高效的解法,用到了前缀最大值和后缀最大值 A. The Power ...
- Codeforces Gym 100513G G. FacePalm Accounting 暴力
G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...
- Codeforces Gym 100269 Dwarf Tower (最短路)
题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...
- Codeforces Gym 100676G Training Camp 状压dp
http://codeforces.com/gym/100676 题目大意是告诉你要修n门课,每门课有一个权值w[i], 在第k天修该课程讲获得k*w[i]的学习点数,给出了课程与先修课程的关系,要修 ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
最新文章
- 从根本上了解异步编程体系
- 配置redis三主三从
- 码农不重视文档:开源项目深受其苦
- yii2增删改查及AR的理解
- XADD和NEG命令
- springMVC从上传的Excel文件中读取数据
- linux发行版衍生关系,linux发行版-Ubuntu的衍生版本UbuntuKylin初体验(伪)
- idea拦截了html中的静态资源,IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)...
- 如何减少mysql的连接时间_mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案...
- 2014年5月欧洲地区SAT写作真题及解题技巧
- Win10 修复引导
- Tita绩效宝:在360度评估中要问的10个最佳问题
- 最新CentOS7.5部署L版ceph 20190610及额外手册告警升级多活等
- php7.4配置文件,Centos8中php7.4安装,附配置文件及常用命令
- 到底什么是“被动收入”?
- 7-10 公路村村通 (30 分)
- 偶然当程序员却拿下图灵奖,超算榜单之父讲述人生开挂经历
- CloudXNS探索之旅
- C++实现电子宠物系统
- Windows 如何关闭快捷键ctrl+alt+方向键旋转屏幕