比较裸的后缀数组。

/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ //By BLADEVIL
var
s, str :array[..] of char;
n, m, l :longint;
i :longint;
ws, wv :array[..] of longint;
w :array[..,..] of longint;
r, sa :array[..] of longint; procedure da;
var
i, j, p, k1, k2 :longint;
begin
for i:= to m do ws[i]:=;
for i:= to n do
begin
w[i][]:=r[i];
inc(ws[r[i]]);
end;
for i:= to m do inc(ws[i],ws[i-]);
for i:=n downto do
begin
dec(ws[w[i][]]);
sa[ws[w[i][]]]:=i;
end; j:=; p:=;
k1:=; k2:=;
while p<=n do
begin
p:=; i:=n-j+;
while i<=n do
begin
w[p][k2]:=i;
inc(p);
inc(i);
end;
for i:= to n do
if sa[i]>=j then
begin
w[p][k2]:=sa[i]-j;
inc(p);
end; for i:= to n do wv[i]:=w[w[i][k2]][k1];
for i:= to m do ws[i]:=;
for i:= to n do inc(ws[wv[i]]);
for i:= to m do inc(ws[i],ws[i-]);
for i:=n downto do
begin
dec(ws[wv[i]]);
sa[ws[wv[i]]]:=w[i][k2];
end; k1:=k1 xor ;
k2:=k2 xor ;
p:=;
w[sa[]][k1]:=;
for i:= to n do
begin
if (w[sa[i-]][k2]=w[sa[i]][k2]) and (w[sa[i-]+j][k2]=w[sa[i]+j][k2]) then
w[sa[i]][k1]:=p- else
begin
w[sa[i]][k1]:=p;
inc(p);
end;
end;
j:=j<<; m:=p;
end; end; begin
n:=;
while not eoln do
begin
read(str[n]);
inc(n);
end;
l:=n; dec(n);
s:=str;
for i:=n+ to *n+ do s[i]:=str[i-n-];
n:=*n+;
s[n]:=chr();
for i:= to n do
begin
r[i]:=ord(s[i]);
if r[i]>m then m:=r[i];
end;
da;
for i:= to n do
if sa[i]<l then write(s[sa[i]+l-]);
writeln;
end.

bzoj 1301 后缀数组的更多相关文章

  1. BZOJ 2882 & 后缀数组的傻逼实现

    题意: 一个字符环,求一个开头使字典序最小. SOL: 后缀数组打起来...然后居然卡过...10sec的实现我10936ms...居然卡过??? rank倒三...啦啦啦啦啦.... 改个离散化会不 ...

  2. bzoj 3172 后缀数组|AC自动机

    后缀数组或者AC自动机都可以,模板题. /************************************************************** Problem: 3172 Us ...

  3. BZOJ 3998 后缀数组

    思路: 第一问 建出来后缀数组以后  前缀和一发n-sa[i]-ht[i]+1  二分 第二问 二分判断是带重复的第几 怎么判断呢   找到它  往后扫ht递减sum+=它   跟K判判 注意等于 加 ...

  4. BZOJ 3796 后缀数组+KMP

    思路: 写得我头脑发蒙,,, 旁边还有俩唱歌的 抓狂 (感谢lh大爷查错) 首先 1.w是s1的子串 2.w是s2的子串 这两步很好办啊~ 后缀数组一下O(n)就可以搞 重点是 这个:3.s3不是w的 ...

  5. BZOJ 3230 后缀数组+ST

    思路: 首先我们已经会了后缀数组求本质不同的子串个数 这道题跟那个差不多 首先我们可以知道按字典序排好的每个后缀之前包含多少本质不同的字串 就是sigma(n-sa[i]+1-ht[i]+bi[i-1 ...

  6. BZOJ 4516 后缀数组+ST+set

    写了一半 没了啊啊啊 重新写的 思路: 先不考虑后缀自动机 (我不会啊) 那这道题只能用后缀数组了 先把原串倒一下 后缀->前缀 相当于每回在前面加了一个字母 求不同的子串个数 首先 正常的求子 ...

  7. BZOJ 4556(后缀数组+主席树求前驱后继+二分||后缀数组+二分+可持久化线段树)

    换markdown写了.. 题意: 给你一个1e5的字符串,1e5组询问,求\([l_1,r_1]\)的所有子串与\([l_2,r_2]\)的lcp 思路: 首先可以发现答案是具有单调性的,我们考虑二 ...

  8. BZOJ 3238 后缀数组+单调栈

    单调栈跑两遍求出来 ht[i]为最小值的那段区间 //By SiriusRen #include <cstdio> #include <cstring> #include &l ...

  9. 【BZOJ4566】找相同字符(后缀数组)

    [BZOJ4566]找相同字符(后缀数组) 题面 BZOJ 题解 后缀数组的做法,应该不是很难想 首先看到两个不同的串,当然是接在一起求\(SA,height\) 那么,考虑一下暴力 在两个串各枚举一 ...

随机推荐

  1. APPium-python实例(记录)

    https://github.com/appium/sample-code/tree/master/sample-code/examples/python

  2. Python 3基础教程24-读取csv文件

    本文来介绍用Python读取csv文件.什么是csv(Comma-Separated Values),也叫逗号分割值,如果你安装了excel,默认会用excel打开csv文件. 1. 我们先制作一个c ...

  3. 在阿里云上遇见更好的Oracle(一)

    2003年毕业那年正好遇上非典,好不容易找到一份制造工厂的工作,凭着一点点的SQL基础进入了IT部门,在那里第一次听说了Oracle.在此之前,我对数据库的认知基本还停留在Access阶段,耳闻过一点 ...

  4. 容器基础(三): 使用Cgroups进行资源限制

    Linux Cgroups Linux Cgroups 是 Linux 内核中用来为进程设置资源限制的一个重要功能. Cgroups将进程进行分组, 然后对这一组进程进行统一的资源监控和限制.Cgro ...

  5. BZOJ 4408 FJOI2016 神秘数 可持久化线段树

    Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1+1+14 = 45 = 4+16 ...

  6. PHP中的6种加密方式

    PHP中的6种加密方式 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str  --  原始字符串. raw ...

  7. 大数运算——hdu1042N!

    一.题目回顾 题目链接:N! Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!   ...

  8. java课程设计 学生管理系统

    学生成绩管理系统 可实现功能 学生管理系统 查询学生信息:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 查询学生成绩:每个人都有数学.Java与体育与选修课 查询学生课程 进行公选课选课 教师 ...

  9. iOS版微信开发小结(微信支付,APP跳转微信公众号)

    最近公司心血来潮,一心要搞微信.废话不多说,直接上干货. 开发前准备: 1.在微信开发者平台获取开发者认证:(一年300元人民币) PS:具体流程按照微信流程指示操作即可,在这就不废话了. 2.下载微 ...

  10. (转)Nginx配置和内核优化 实现突破十万并发

    nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数. worker_cpu_affinity 00000001 00 ...