<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>cbdsopa's blog</title><link>https://cbdsopa.github.io/my-blog/</link><description>Recent content on cbdsopa's blog</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://cbdsopa.github.io/my-blog/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://cbdsopa.github.io/my-blog/posts/string-template/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cbdsopa.github.io/my-blog/posts/string-template/</guid><description>&lt;h1 id="字符串"&gt;字符串&lt;/h1&gt;
&lt;h2 id="hash"&gt;hash&lt;/h2&gt;
&lt;h3 id="数字工具"&gt;数字工具&lt;/h3&gt;
&lt;p&gt;小质数：101, 103, 1009, 10007, 10009, 100003, 1000003, 1145141&lt;/p&gt;
&lt;p&gt;大质数：998244353, 1000000007, 1000000009&lt;/p&gt;
&lt;h2 id="kmp-和-border"&gt;kmp 和 border&lt;/h2&gt;
&lt;h3 id="性质"&gt;性质&lt;/h3&gt;
&lt;p&gt;fail 树子树里的位置为该 border 的出现位置。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;性质1.&lt;/strong&gt; border 的 border 还是 border，并且每次取最大的 border 可以遍历原串所有 border。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;性质2. （弱周期引理）&lt;/strong&gt; 对于周期 $p, q$，如果 $p + q \le n$，则 $gcd(p, q)$ 也是周期。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;性质3.&lt;/strong&gt; 对于字符串 $s, t$，$s$ 为 $t$ 的前缀，$t$ 有周期 $a$，$s$ 有周期 $b$，满足 $a \le |s|$ 且 $b \mid a$，则 $b$ 也为 $t$ 的周期。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;性质4.&lt;/strong&gt; 对于字符串 $s, t$，若 $2|s| \ge |t|$，则 $s$ 在 $t$ 上的匹配位置形成等差数列。&lt;/p&gt;</description></item></channel></rss>