字符串
文章平均质量分 79
hzt_Owen
这个作者很懒,什么都没留下…
展开
-
【spoj8757】Kmp 概率Dp
给出字符串S,S仅由a与b组成。有一个空串T,每次在末尾随机加上a或b。问期望几轮后S串为T串的后缀?先用Kmp求出匹配失败去哪,然后可得状态转移。f[i] = (sum[i-1] - sum[next[i] - 1] + f[i] + 1) * 0.5 + 0.5, f[0] = 2;移项得 f[i] = sum[i-1] - sum[next[i] - 1] + 2。#incl原创 2014-12-01 14:08:44 · 613 阅读 · 0 评论 -
【poj 3261】后缀数组
先求后缀数组,再二分答案。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x) for (int i = pos[x]; i; i = g[i].nex)#define Dwn(i, x,原创 2015-03-05 10:23:37 · 392 阅读 · 0 评论 -
【bzoj 1692】后缀数组
将一个字符串进行如下操作:每次拿去首或尾,放在新字符串尾,问新字符串字典序最小的情况。直觉贪心,但情况复杂。可以用后缀数组,每次比较当前剩余串正序和倒序哪种字典序小,可以如下构建:ABCD -> ABCD0DCBA#include #include #include #include #include #include #define Rep(i, x, y) for (i原创 2015-03-06 11:22:46 · 416 阅读 · 0 评论 -
【HDU】5470 Typewriter 后缀自动机+dp
首先暴力的方法就是,对第i个位置,我枚举j(j 幸运的是,区间求最小值不需要线段树(省去一些编程复杂度)。因为当i->i+1时,j是单调不减的!因为如果在添加第i+1个字符时j减小了,那么在第i个字符的时候我们就可以减小,矛盾。这样我们就可以用单调队列来求区间最小值了(单调队列求最小值的原理是维护一个递增的队列,当枚举的左端点大于队列最左端表示的点,就把队列最左端的点丢弃,加入一个点就维护这个原创 2015-10-02 14:08:04 · 702 阅读 · 0 评论 -
【VOJ1895】 ニニスの守護 后缀数组 DP
有一个十进制数字符串S,它是由一个严格上升的数列A拼接而成,要求你构造A使得:1. 最后一个数最小2. 在1的基础上字典序最大#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define Dwn(i, x, y)原创 2016-01-11 10:30:13 · 687 阅读 · 0 评论 -
【codeforces 576D】LCS Again
给一个串,问有多少和它长度相同的串,使得LCS为l - 1。#include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define Dwn(i, x, y) for (int i = x; i >= y; i --)#define RepE(i,原创 2016-01-12 09:50:07 · 902 阅读 · 1 评论 -
【poj 1743】后缀数组
不可重叠最长重复子串。二分答案后将height数组分段,看每段中sa最大减最小是否满足。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x) for (int i = pos[x]; i原创 2015-03-06 10:54:01 · 344 阅读 · 0 评论