CSP2019赛前小复习:

虽然觉得复习也没有什么用,还不吃好睡好,保持好心情。

SA:

坑就那几个。

(s[0]=s[n+1]=-1).

(rank)交换的(tp)数组的(tp[n+1]=0)

一般加上这两个多测也没有问题。

题:https://www.luogu.org/problem/P5576

https://www.luogu.org/record/26886770

数据有锅调了我好久,艹。

无非是启发式合并,不难,就是有点长。

SAM:

没写改儿子看了半天……

写完之后注意要写个递归验一验。但是似乎改儿子没写验不出来?

题:https://www.luogu.org/problem/P4022

https://www.luogu.org/record/26899209

广义SAM+单调队列

AC自动机:

注意(fail[1]=0),然后走到0时要回1,除非用另一种写法。

然后就是fail和含义,和一定要传fail。

题:
https://www.luogu.org/problem/P2603

https://www.luogu.org/record/26940875

因为几何太差WA了二十发。

考虑那四种操作也就是这两个图形相似。

也就是相邻边的夹角和边的长度的比值相同。

边的长度比值好搞,直接用平方比约一约就好了。

角的话考虑用叉积比点积,就是(tan β)

但是注意角度可以负过来,即整个图形时针方向相反。

所以叉积比点积比值全部相反,也视作相同,所以正着反着做两遍。

然后当叉积为0时,会算重一遍。

搞完后再离散一下,跑个ac自动机,沿fail链传一下。

manacher:

日常手推,然后写错了……

题:

https://www.luogu.org/problem/P4287

https://www.luogu.org/record/26962019

考虑manacher新添加一个回文串是判断它的半部分是不是回文就好了。

也可以用回文树多记个标记表示跳fail最接近一半的回文后缀的位置,不断更新这个东西就好了。

exkmp:

每次写再看看之前的代码都会发现完全不一样。

题:

https://ac.nowcoder.com/acm/contest/1099/C

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41755315

把串反过来,自我匹配后统计一下就好了。

回文树:

题:

https://www.luogu.org/problem/P1659

https://www.luogu.org/record/27080559

这题用manacher做应该更简单的,实在是没有题写了。

原文地址:https://www.cnblogs.com/coldchair/p/11840540.html