关闭
当前搜索:

[后缀数组] BZOJ 2119 股市的预测

类似 [Noi2016]优秀的拆分枚举 A 的长度 l,把字符串中所有下标为 l 倍数的位置标记出来。左端点 A 的部分一定恰好包含一个标记点。 枚举每一个标记点 i,它的对应点是 i+l+m,后缀数组求出往前 最多对应相同的位数 L 和往后最多位数 R。 贡献为 max(0,min(L-1,l-1)+min(R-1,l-1)+1-l+1);#include #includ...
阅读(193) 评论(0)

[后缀数组 主席树] BZOJ 4556 [Tjoi2016&Heoi2016]字符串

二分答案 t,在后缀数组上找到与 [c,d] LCP 大于等于 t 的区间 [l,r]。 相当于询问 [l,r] 中是否存在 [a,b − t + 1] 里的数字 主席树#include #include #include using namespace std;inline char nc(){ static char buf[100...
阅读(181) 评论(0)

[后缀数组 贪心] BZOJ 4278 [ONTAK2015]Tasowanie

两个指针 显然小的那个先放 如果一样 比后一个 再一样 再后 然后就转化成比较后缀的字典序了#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p...
阅读(256) 评论(0)

[后缀数组 枚举 字符串分段] BZOJ 4650 [Noi2016]优秀的拆分

先求出所有的双倍字串 然后再乱来 我们枚举一半的长度 然后把整个字符串按照长度l分段  起点分别为 s[1] s[l+1] s[2l+1]  ... 分段后记作 S1 S2 S3 ..... 那么双倍的串一定会包含其中两个 我们求 Si Si-1的LCS  Si Si+1的LCP 如果LCS+LCP>=l 那么存在 双倍串 记录一下 这里我用了差分 #include ...
阅读(155) 评论(0)

[AC自动机 fail树 || 后缀数组] BZOJ 3172 [Tjoi2013]单词

只有我一个人觉得题意看不懂么 fail树的做法 首先我们将给出的n个串构建AC自动机 朴素的做法是对于每个串将这个串每个节点沿着fail指针扫一遍,将路径上的所有点的cnt++ 但是这样做会TLE 我们不妨反向思考 fail指针反向后是一棵树 沿着fail指针扫一遍就是沿着树边向根扫一遍 只在插入时将每个串的每个节点cnt++ 那么每个串终点所在fail...
阅读(159) 评论(0)

[SA] BZOJ 2251 [2010Beijing Wc]外星联络

见后缀数组后暴力就好了 考前练版子,竟然WA了几发 #include #include #include #include using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,std...
阅读(232) 评论(0)

[后缀数组 set] BZOJ 4516 [Sdoi2016]生成魔咒

将串反过来 后缀数组 然后用set维护一个序列 插入时修改答案即可 #include #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p...
阅读(272) 评论(0)
    个人资料
    • 访问:309224次
    • 积分:12399
    • 等级:
    • 排名:第1311名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:54条
    最新评论