
后缀数组
文章平均质量分 79
nlj1999
这个作者很懒,什么都没留下…
展开
-
后缀数组水水水水水水题
首先: jxrjxrjxr Orz,没有您我们都会死~ 然后就是我从jxr神犇那里借鉴(照抄)过来的后缀数组模板。 #include #include #include #define cmp(x) (y[sa[i]+x]==y[sa[i-1]+x]) using namespace std; const int N=100000+1000; char s[N]; int a[N],b[原创 2016-01-14 19:46:14 · 525 阅读 · 0 评论 -
BZOJ 4310: 跳蚤
(我当然不是因为标题才点进这道题的啦(打死不承认)) 最大字典序的串最小,听起来就很像二分嘛 于是我们考虑一共m个本质不同的子串,从这里面二分就好了 首先我们需要求第k大(小?)(即二分时的mid)的子串: 我们从前往后扫sa数组,即从小到大枚举后缀,若当前后缀贡献的字串数不够k,则让k减去这些贡献,否则答案即是这些后缀所构成的贡献(就是一个后缀上的一大堆前缀区间啦)中的第k个。原创 2016-06-17 18:41:25 · 1332 阅读 · 0 评论