
后缀数组
何乐乐和何了了
冲冲冲!
展开
-
2016MUTC9-1010 Jong Hyok and String
题解:将p串翻转,间隔不同字符连接起来,进行一次后缀数组的操作。若strange set(Q)>0,那么Q肯定是p串中一个的子串。所以Q串翻转后,二分直接在后缀数组中找到边界位置,lower和upper。 当不存在时,答案为0; 当lower==upper时,答案为最大长度(sa[lower]到间隔字符的长度)-最小长度(max(height[lower],height[upper+1])+1原创 2016-08-29 16:06:44 · 658 阅读 · 0 评论 -
2016MUTC4-1006 substring
题解:考虑不包含字符X的情况,不同的子串可以用后缀数组解决: 考虑含字符X的情况:即对于起点为sa[i],终点必须在X之后: nxt[i]表示位置i及之后的第一个X出现的位置 #include #include #include #include #include #include using namespace std; const int N=1e5+10; t原创 2016-09-01 10:25:14 · 336 阅读 · 0 评论