摘要: 一个字符串,如果循环等价,则存在一个最小的字典序表示。 字符串长度为 \(n\),先复制一倍拼接在后面。 设置两个游标 \(x=1,y=2\),不断比较以这两个游标开始的串大小。 \(k\) 从 \(0\) 开始,比较 \(s_{x+k}\) 与 \(s_{y+k}\) 的大小,会产生三种结果: \ 阅读全文
posted @ 2026-05-06 00:01 qwynick 阅读(4) 评论(0) 推荐(0)
摘要: 常见的积性函数: 单位元 \(\epsilon(n)=[n=1]\): \(\epsilon(nm)=[nm=1]=[n=1][m=1]=\epsilon(n)\epsilon(m)\) 常值函数 \(\iota(n)=1\): \(\iota(nm)=1=\iota(n)\iota(m)\) 等值 阅读全文
posted @ 2026-05-05 23:22 qwynick 阅读(4) 评论(0) 推荐(0)
摘要: 一个数 n 的欧拉函数值,定义为在 1~n 之间与 n 互质的数的个数。 欧拉定理:如果 (x,n) = 1,则 x^p = 1 (mod n)。这里 p 是 n 的欧拉函数值。 假定 这些互质的数分别为 a1,a2,a3,...,ap。 对其中任意一个数 a,由于 (a,n) = 1,且 (x,n 阅读全文
posted @ 2026-05-04 23:10 qwynick 阅读(3) 评论(0) 推荐(0)
摘要: 威尔逊定理 p=2显然成立,以下仅考虑p>=3。 (p-1)! =-1 (mod p) 123...(p-1) 一共有p-1个数。 由于p是素数,(a, p) = 1,固 ax=1 (mod p) 有唯一解,即每个数都有一个逆元。 首先,对于方程 x^2=1 (mod p) 只有两个解 x=±1,意 阅读全文
posted @ 2026-05-04 22:46 qwynick 阅读(3) 评论(0) 推荐(0)
摘要: c数组用于计数,sa[i]保存第i小串的起点位置,rk[i]保存i位置所属的桶,h[i]保存i位置的后缀串与排名比他小1小的后缀串的LCP。 int c[N], sa[N], rks[2][N], h[N], *tmp, *rk; void build(int n, int m = 128) { f 阅读全文
posted @ 2026-05-03 00:43 qwynick 阅读(5) 评论(0) 推荐(0)
摘要: 可持久字典树 nxt就是字典树,cnt记录单词数量,root记录版本 int nxt[M][2], cnt[M], root[N], tot; void init(int n) { for (int i = 0; i <= n; i++) root[i] = ++tot; } 首先跟其他可持久一样, 阅读全文
posted @ 2026-05-03 00:42 qwynick 阅读(5) 评论(0) 推荐(0)
摘要: 首先把原字符串塞入#进行分割,这样奇偶都能处理。 奇串中心是原字符,偶串中心为#。 变量M记录最远回文的中心,R记录最远回文的最远位置。 当考虑一个新位置i作为中心的最长回文长度时有几种可能: ①该点在R以内,那么是处理过的,其相对于M有一个对称点,由于M点为中心是回文,所以i的回文情况与2M-i是 阅读全文
posted @ 2026-05-02 00:10 qwynick 阅读(4) 评论(0) 推荐(0)
摘要: z[i]记录了从第i位置开始,与原串的最长公共前缀。 L记录最远前缀匹配的起点,R记录最远前缀匹配的终点。 如果当前位置在R之内,那么i的匹配情况,等于i-L+1的匹配情况。这是因为1对应L,2对应L+1。。。i-L+1对应i。 当然,如果字符串起点是0,那么对应的是i-L。 如果该处的匹配长度z[ 阅读全文
posted @ 2026-05-02 00:10 qwynick 阅读(2) 评论(0) 推荐(0)
摘要: 先求 \(border\),\(fail_i\) 记录以 \(i\) 为截止位置的最大 \(border\),即前后缀匹配长度。 \(j\) 记录处理完 \(i\) 位置后,最长的前后缀匹配长度。 对于一个新的位置 \(i\): 如果 \(t_{j+1}=t_i\),前缀推进一个字符=后缀推进一个字 阅读全文
posted @ 2026-05-02 00:09 qwynick 阅读(2) 评论(0) 推荐(0)
摘要: AC自动机 KMP算法中,模式匹配是在一个串上,如果有很多串,可以构建一颗字典树,fail指向将在树上产生链条。 首先根据模式串搭建字典树。 for (int id = 1; id <= n; id++) { cin >> s; int node = 0; for (int i = 0; s[i]; 阅读全文
posted @ 2026-05-02 00:07 qwynick 阅读(5) 评论(0) 推荐(0)