[POJ2406]Power Strings
传送门
给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的,求 R 的最大值。
1.后缀数组
做法比较简单,穷举字符串 S 的长度 k,然后判断是否满足。判断的时候,
先看字符串 L 的长度能否被 k 整除,再看 suffix(1)和 suffix(k+1)的最长公共
前缀是否等于 nk。在询问最长公共前缀的时候,suffix(1)是固定的,所以 RMQ问题没有必要做所有的预处理,只需求出 height 数组中的每一个数到
height[rank[1]]之间的最小值即可。
因为用的是倍增求后缀数组,TLE,然而不会 DC3,正确性。。。。不知道(但至少思路是对的,你敢质疑罗大牛?)
——代码
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #define N 1000001 5 #define min(x, y) ((x) < (y) ? (x) : (y)) 6 7 int len, n, m, ans; 8 int buc[N], x[N], y[N], sa[N], rank[N], height[N], d[N]; 9 char s[N]; 10 11 inline void build_sa() 12 34 } 35 36 inline void build_height() 37 48 } 49 50 inline void RMQ_init() 51 57 58 inline int RMQ(int k) 59 62 inline int solve() 64 72 73 int main() 74 84 return 0; 85 }View Code
可见后缀数组并不是正解。
2.kmp(没细致研究过,以后补)
上一篇:[CODEVS1914] 运输问题(最小费用最大流)
后缀数组 kmp
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?