摘要:
一个初步的想法是我们枚举重复子串的长度$L$。然后跑一遍SA。然后我们枚举一个点$i$,令他的对应点为$i+L$,然后求出这两个点的LCP和LCS的长度答案就是这个点的答案就是$(len(LCP)+len(LCS)+L 1)/L$。这个可以用跟$EXKMP$的类似的方法证明。 但是这样会T。 那么如 阅读全文
摘要:
求出一个串使得这个串是$s1,s2$的子串。串中不包含$s3$。 如果没有这个$s3$就可以二分答案,然后height小于二分值分一组。看看每组里是不是出现过$s1,s2$的后缀。判断就行。 然后有了$s3$之后,我们考虑改变一下height数组。 我们把$s1s2$拼在一起构成一个新串$s$。(中 阅读全文
摘要:
很容易想到只考虑后缀长度必须为$max(height[rk[i]],height[rk[i]+1])+1$(即$[i,i+x 1]$代表的串只出现过一次)然后我正着做一遍反着做一遍,再取一个$min$最后挂了。。。 设$x=max(height[rk[i]],height[rk[i]+1])+1$我 阅读全文
摘要:
一开始的时候感觉就是一个主席树裸题。 然后发现自己错了。 首先建出后缀数组。 设$irk[j]$显然i更优。 如果$rk[i] include include include include include include include using namespace std; const int 阅读全文
摘要:
喜闻乐见的LCT+SAM 此题要求动态插入,直接上后缀树。然后询问其实就是求一个节点的子树后缀结束节点的个数。 因为建立后缀树需要插入和删除,就直接上LCT。每次加入一个点,把它到根的路径加一 ~~(现在我才知道access之后那个splay就是这个点到根的路径,LCT学得不好)~~ 思路不需要说太 阅读全文
摘要:
后缀自动机有一个性质。 就是如果倒建SAM两个串的lcp就是这两个串的结束节点的LCA。 然后就可以愉快的跑DP了。 对于每一个后缀树上的节点$u$,它对$len[u]$的贡献是$\sum_{v1}\sum_{v2\neq{v1}}size[v1] size[v2]$当然如果u就是一个后缀的结尾就要 阅读全文
摘要:
我们把所有的名,姓,询问都拼起来构成一个新的长串,然后跑一边SA。排完序后对于每一个询问,我们可以二分求出它所对应的区间(即满足这个区间的前缀都是这个询问串)。然后问题就转化为很多区间问区间出现过的不同的数。这个东西可以用离线后吧询问按右端点从小到大排序+树状数组解决(HH的项链,采花)。 那么第二 阅读全文
摘要:
~~1A真舒服。~~ 喜闻乐见的树链剖分+SA。 一个初步的想法就是用树链剖分,把两个字符串求出然后hash+二分求lcp。。。不存在的。 因为考虑到这个字符串是有序的,我们需要把每一条重链对应的字符串和这个重链反过来对应的字符串拼起来构成一个新的字符串。我们用树链剖分拼出两个字符串。用树剖拼出的这 阅读全文
摘要:
解法一:后缀数组 听说后缀数组解第k小本质不同的子串是一个经典问题。 把后缀排好序后第i个串的本质不同的串的贡献就是$n-sa[i]+1-LCP(i,i-1)$然后我们累加这个贡献,看到哪一个串的时候,这个贡献的和大于等于k,然后答案就在这个串里了,然后枚举就行了。 那么第k小子串该怎么办? 我们考 阅读全文
摘要:
~~今天原来是平安夜啊~~ 感觉这题是道好题。 一个套路枚举权值$x$,把权值等于$x$的设为1,不等于的设为 1,然后问题转化为多少个区间权值和大于。 发现并不是很好做,还有一个套路,用前缀和查分来表示区间。然后就是 $$i include include include include incl 阅读全文
摘要:
设$l[i]$为i左边第一个比i大的数的下标。$r[i]$为i右边第一个比i大的数的下标。 我们把$p1,p2$分开考虑。 当产生贡献为$p1$时$i$和$j$一定满足,分别为$l[x],r[x]$枚举每一个值为$i$,$j$之间最大值可证。 党产生贡献为$p2$时$i$和$j$满足分别为$l[x] 阅读全文
摘要:
听说这题的所发和 很像。 然而那道题我使用莫队写的。。。 这是一个套路,pre数组加升维(在线)。 记录一个$pre$数组,$pre[i]$代表上一个和i颜色相同的下标。 我们把询问离线,扫一遍$a$数组。然后每扫过一个点,就把$pre[pre[i]]$这个位置上减1,把$pre[i]$加1。然后每 阅读全文
摘要:
点分治真是一个好东西。~~可惜我不会~~ 这种要求所有路经的题 很可能 是点分治。 然后我就不会了。。 既然要用点分治,就想,点分治有哪些优点?它可以$O(nlogn)$遍历分治树的所有子树。 那么现在的问题就是,如可快速($O(n)$或O$(nlogn)$)求以一个点为根的时候,子树之间的贡献(当 阅读全文
摘要:
本蒟蒻现在才知带扩展欧拉定理。 对于任意的$b\geq\varphi(p)$有 $a^b\equiv a^{b\ mod\ \varphi(p)+\varphi(p)}(mod\ p)$ 当$b include include include include using namespace std; 阅读全文
摘要:
发现每次区间加只能加1,最多全局加$n$次,这样的话,最后的答案是调和级数为$nlogn$,我们每当答案加1的时候就单点加,最多加$nlogn$次,复杂度可以得当保证。 然后问题就是怎么判断答案是否该加1。我们可以用线段树设初值为给出的排列,把区间加改成区间减,维护最小值。当最小值为0是遍历左右子树 阅读全文