后缀数组
L_0_Forever_LF
一个热爱OI的OIer
展开
-
BZOJ3998: [TJOI2015]弦论 解题报告
Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。题解:这里介绍SA的做法(相对SAM会慢一些) 先处理出有多少个不相同的子串,对于T=0的询问,直接找第k小子串即可 对于T=1的询问,二分答案是第原创 2016-10-10 13:47:30 · 583 阅读 · 0 评论 -
BZOJ3620: 似乎在梦中见过的样子 解题报告
这题一直没想出来,后来发现O(n2)O(n^2)能过…….SA+n2SA+n^2枚举 枚举一个左端点i,处理一下前缀i和每个前缀的height值,然后往右枚举右端点j,判一下height值是不是>k,如果是的话,把不覆盖中间全部区间的所有方案加入答案,注意不同j的答案可能重复,所以先存到一个数组里,弄一下前缀和,扫完j扫一遍数组就好了code:#include<set> #include<map>原创 2016-10-11 20:45:44 · 963 阅读 · 0 评论 -
BZOJ2119: 股市的预测
找有多少个形如ABA的串,B的长度给定 可枚举A的长度L,按L分块,每块内确立一个位置为关键点,那么两端的A都会覆盖且仅覆盖一个关键点 枚举左端被覆盖的关键点i,右端相对应匹配的位置是j=i+L+m,i和j向左,向右分别匹配最长公共后缀和前缀l、r(和L取min防止覆盖其他关键点造成重复) 建立正反串的SA,rmq求l、r,若l+r>=L,则l+r-L+1就是这两点的贡献code:#inclu原创 2017-10-18 07:16:26 · 386 阅读 · 0 评论 -
Codechef TANDEM
定义形如XXX的串是好的串,在好的串的前提下,若这个串后面的第一个字符和这个串的第一个字符不同,这个串就是有趣的串,否则是无聊的串,求S的所有子串中,有趣的串和无聊的串的个数 枚举XXX中X的长度L,每L个位置设一个关键点,那么一个好的串一定会且仅会经过3个关键点,枚举第一个,计算他和第二个关键点的LCP,LCS,可以得到好的串合法的左端点区间,注意到若一个好的串将他右移后仍然是好的串,那么他一...原创 2018-04-20 21:32:17 · 394 阅读 · 0 评论