tg 60
T1
首先特判\(2|n\)无解!
判断的话首先得判串长相等对吧
如果删掉一个点以后,肯定是对半分串对吧
如果删掉的点\(v\in[\lfloor\frac{n}{2} \rfloor+1,n]\)
那么删掉以后对半分串长显然\(\lfloor\frac{n}{2} \rfloor\)
由于删掉的点\(v\in[\lfloor\frac{n}{2} \rfloor+1,n]\)
所以这种情况下,\([1,\lfloor\frac{n}{2} \rfloor]\)这一段区间是不变的
于是问题就转换成这样:
是否存在一个位置\(p\)满足:
文本串删掉位置\(p\)的字符以后与模式串相同
这个就简单了吧?
\(Hash\)甚至直接字符串全文比较都是对的
只需要上述问题做两遍直接切了
对了,判断这两个串是不是相同的
T4
概率\(DP\)比较套路
出门左转先学个套路题
套用上述定义,有
\(f_{i}=\frac{f_{i+1}+f_{fail_{i+1}}}{2}+1\)
其中\(f_i\)表示拼到第\(i\)位的期望
然后\(fail_{i}\)表示如果\(i\)这个位置和\(S\)不一样,我到哪去匹配
其实就是失配指针的意思
这里就是失配串和原串的\(LCP\)
做这个\(DP\)手动迭代或者高斯消元都行
由于矩阵比较稀疏所以高斯消元就是个大常数\(O(n)\)的复杂度
做完上面这个套路以后,考虑快速维护\(fail\)
\(1.s_{i}=s_{j}\to fail_i=fail_j\)
\(2.s_{i}\not =s_{j}\to fail_i=j\)
T2
如果是序列上做的话
事实上可以分析出:
这个操作事实上就是交换前缀和
于是我们求个逆序对就好了
但是不能硬搬到环上,
因为在环上这两个操作不是等价的
接下来怎么做呢?
看题解

T3
广义\(SAM\)上对于\(fail\)树做树剖
而众所周知这是\(NOIP\)模拟赛
\(\Huge 乐\)
先不准备改

浙公网安备 33010602011771号