OceanEye's Blog

是时候表演真正的技术了!

@OceanEye1年前

08/14
15:59
OI

BZOJ1031 [JSOI2007]字符加密Cipher

嗯这题不是权限题 很友好
SA裸题
把原串复制一遍接在最后面,跑一遍SA
只需要把SA中在[1,len]范围内的放入答案数组就好了
写得比较直接……就比较丑,各位见谅

BZOJ1031 [JSOI2007]字符加密Cipher

@OceanEye1年前

08/9
21:10
OI

XSYOJ 1133 兔子的字符串

题面大意是:
给一个长度为N的串
\( N \leq 100000 \)
最多分割k次
问若干分割方法中
字典序最大的子串最小是什么

问了一下ZJT大佬……
原来是建出SA之后
先二分后缀
后二分长度

有一些细节要注意,除此之外就很simple了

XSYOJ 1133 兔子的字符串

@OceanEye1年前

08/8
11:12
OI

BZOJ4278

4278: [ONTAK2015]Tasowanie

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 434  Solved: 203
[Submit][Status][Discuss]

Description

给定两个数字串A和B,通过将A和B进行二路归并得到一个新的数字串T,请找到字典序最小的T。

Input

第一行包含一个正整数n(1<=n<=200000),表示A串的长度。
第二行包含n个正整数,其中第i个数表示A[i](1<=A[i]<=1000)。
第三行包含一个正整数m(1<=m<=200000),表示B串的长度。
第四行包含m个正整数,其中第i个数表示B[i](1<=B[i]<=1000)。

Output

输出一行,包含n+m个正整数,即字典序最小的T串。

Sample Input

6
1 2 3 1 2 4
7
1 2 2 1 3 4 3

Sample Output

1 1 2 2 1 2 3 1 2 3 4 3 4

HINT

Source

[Submit][Status][Discuss]
 

把两个串前后拼在一起 然后用SA处理出rank数组跑归并

中间插一个大大的分隔符就好

听说有姿势奇怪的贪心?【难道是某种神奇的哈希……】

现在不是很想理……

代码

 

BZOJ4278

@OceanEye1年前

06/12
12:16
OI

BZOJ1009

随便搞搞转移矩阵……就是每个位上往后面拓展一位能拓展到哪些后缀
然后发现这个转移矩阵可以用快速幂来加速
于是随便搞搞了XD

BZOJ1009