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做应该更简单的,实在是没有题写了。