Skip to content

Commit

Permalink
Site updated: 2023-11-04 19:28:13
Browse files Browse the repository at this point in the history
  • Loading branch information
YttriumWillow committed Nov 4, 2023
1 parent 536fedc commit b4f3401
Show file tree
Hide file tree
Showing 22 changed files with 62 additions and 38 deletions.
6 changes: 3 additions & 3 deletions 2023/10/26/Test-Article/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions 2023/10/26/hello-world/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions 2023/10/27/P5377-THUPC2019-鸽鸽的分割-题解/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions 2023/10/27/公式渲染压力测试/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions 2023/10/29/P9816-少项式复合幂-题解/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions 2023/11/02/Manacher-算法学习笔记/index.html

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion archives/2023/10/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion archives/2023/11/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion archives/2023/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion archives/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions categories/OI/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion categories/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions categories/博客/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion content.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"posts":[{"title":"Manacher 算法学习笔记","text":"Manacher 算法于 1975 年发明,用其发明者的名字命名。 Manacher 是一个线性解决回文子串问题的算法。 Manacher 算法适用于处理字符串的所有回文子串,而并非只适用于通常意义上的最长回文子串,具体见下文解释。 前置知识考虑如何描述一个字符串里的回文子串。 比较简单的想法是记该子串的左右端点,将其记为 $[l,r]$。然而对于一个回文子串的子串 $[l+d,r-d]$ 它同样是一个回文子串;除非我们用较为复杂的方法记录这个回文子串的子串,否则需要用另外的空间来描述和储存,这造成了浪费。 另一个利用回文串性质的记法是记录其对称中心和对称长度。例如对于字符串 DBABCBAB 中的子串 ABCBC,我们就可以记其为 $[5,3]$。 对于偶数长度的回文串,我们考虑在每两个字符间插入一个字符,例如 #。同时我们要在头尾插入一些指示字符,辅助下面算法的判断。例如把上面的串变成:$D#B#A#B#C#B#A#B。 通过上述记法结合回文串性质可以发现 $[5,2]$,$[5,1]$ 均为回文子串。我们就可以小改以上这个记法为记录其对称中心和最大对称长度。也就是说 $[5,3]$ 可以说明以 $5$ 为对称中心实际上存在 $3$ 个回文子串。 Manacher 可以用 $O(n)$ 的复杂度求出每一个对称中心的最长对称长度。因此,之前说有人对该算法存在误解,其实我们是可以知道所有回文子串的。 算法考虑一个中心扩展算法。 Unfixed","link":"/2023/11/02/Manacher-%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"title":"P9816 少项式复合幂 题解","text":"简要题意称一个项数小于等于 $20$ 的多项式为一个少项式。 求一个少项式的 $y$ 次复合函数在 $x$ 点上 $f_{y}(x)\\bmod p$ 的值。 解题思路题目强调注意 $m,p$ 的范围,观察发现 $p$ 的范围在 $10^5$ 之内。 关于模运算,它拥有以下显然的性质: (x + y)\\bmod p = (x\\bmod p + y\\bmod p) (x \\times y)\\bmod p = ((x\\bmod p)\\times (y\\bmod p))\\bmod p所以对于一个多项式函数有等式 $f(x) \\bmod p = f(x\\bmod p)\\bmod p$ 存在。不明白的想想你的快速幂为什么对。 f(x)\\bmod p = \\sum_{i = 1}^{m} a_i x^{b_i} \\bmod p = \\sum_{i = 1}^{m} (a_i (x\\bmod p)^{b_i} \\bmod p) \\bmod p如上柿我们可以用 $O(m\\log\\max\\{b\\})$ 的时间预处理出所有 $0\\le x < p$ 的 $f(x)\\bmod p$,$O(1)$ 地快速进行回答。 然后应该初学者都能想到通过 $y$ 次迭代求得 $f_y(x)\\bmod p$,关键在于将迭代的复杂度降低。 考虑进行倍增,因为有 $f_{2^k}(x) = f_{2^{k - 1}}(f_{2^{k - 1}}(x))$。 令 $st_{x,k} = f_{2^k}(x)$ 则我们可以通过 $O(\\log y)$ 的迭代求得答案。 st_{x,k} = \\begin{cases} f(x)\\bmod p & k = 0 \\\\ st_{st_{x,k - 1},k - 1} & \\mathrm{Otherwise.}\\\\ \\end{cases}需要注意的是,因为 $y\\le 10^7$,因此枚举 $k$ 直到 $2^k > 10^7$。 贴个代码这里令 $f_{x,k} = st_{x,k}$。 123456789101112131415161718#define rep(i, l, r) for (int i = (l); i <= (r); ++i)constexpr int Y = 1e7 + 10;rep (i, 0, p - 1) rep (j, 1, m) f[i][0] = (f[i][0] + 1ll * a[j] * fpow(i, b[j]) % p) % p;for (int j = 1; (1 << j) <= Y; ++j) rep (i, 0, p - 1) f[i][j] = f[f[i][j - 1]][j - 1];rep (i, 1, q){ cin >> x >> y; x %= p; for (int k = 30; ~k; --k) if ((1 << k) & y) x = f[x][k]; cout << x << endl;}","link":"/2023/10/29/P9816-%E5%B0%91%E9%A1%B9%E5%BC%8F%E5%A4%8D%E5%90%88%E5%B9%82-%E9%A2%98%E8%A7%A3/"},{"title":"P5377 [THUPC2019] 鸽鸽的分割 题解","text":"简要题意连结圆上 $n$ 个点,求最多能够把圆分成几个部分。 前置知识欧拉公式:$F(ace)=E(dge) - V(ertex)+2$ 人话:$\\text{多边形面数} = \\text{边数} - \\text{顶点数} + 2$ 思路将一个圆折叠成一个多面体,你可以进行一些奇妙的空间变换来达到这一点。 那么我们最后会多出一个底面。 因此在我们的这个圆中 $F(n)=E-V+1$ 求 $V$圆上已经有了 $n$ 个点。我们要使得圆内不存在三线共点的情况。 那么考虑每次选择四个顶点画出一个四边形的两条对角线。 于是又会生成 $C_{n}^{4}$ 个顶点。可以证明已经考虑完全了,于是有 V = n + C_{n}^{4}求 $E$原有 $C_{n}^{2}$ 条边,且圆环上的 $n$ 个点互相连接构成 $n$ 条边。 每多一个交点会增加两条多边形边。又有 $2\\times C_{n}^{4}$ 条。 E = n + C_{n}^{2} + 2\\times C_{n}^{4}最后,我们展开这个逆天的柿子: \\begin{aligned} F(n) &= E - V + 1 \\\\ &= n + C_{n}^{2} + 2\\times C_{n}^{4} - n - C_{n}^{4} + 1 \\\\ &= C_{n}^{2} + C_{n}^{4} + 1 \\\\ &= \\dfrac{n(n - 1)}{2} + \\dfrac{n(n - 1)(n - 2)(n - 3)}{4\\times 3 \\times 2} + 1 \\\\ &= \\dfrac{x^4}{24} - \\dfrac{x^3}{4} + \\dfrac{23x^2}{24} - \\dfrac{3x}{4} + 1 \\end{aligned}去 OEIS 上校验结果,正确。","link":"/2023/10/27/P5377-THUPC2019-%E9%B8%BD%E9%B8%BD%E7%9A%84%E5%88%86%E5%89%B2-%E9%A2%98%E8%A7%A3/"},{"title":"在随便哪一台电脑上写博客?- Hexo 多端同步","text":"将 Github 运用到底! 再来个奇妙小仓库还是太麻烦了,我们使用分支功能。 启用同步在第一用户端的博客根目录下 Git Bash 新建一个仓库。 1git init 然后确保你的 .gitignore 文件里屏蔽了以下目录和文件的提交。 12/.deploy_git /public 添加该仓库到远程仓库列表: 12345git remote add origin [your github repository]# 例如作者本人的:# git remote add origin [email protected]:YttriumWillow/yttriumwillow.github.io.git# 这是 SSH 模式下的提交,你的远程仓库 HTTPS 地址可能是这样# https://github.com/username/username.github.io.git 一路提交更改到 hexo 分支。 1234git add . # 将变更添加到 git 暂存区 git commit -m "[comment]" # 提交本次更改,并附加提交信息git push origin main:hexo # 将本地 main 分支的提交发布到远程仓库的 hexo 分支# 我为了省事用的 main 主分支,有的仓库的默认分支可能是 master 你的 Github 仓库里面就会出现这个分支。 在其他设备上同步如果这是一台全新的设备, 请先安装 Git, Node.js 并更新 npm。 打开你需要同步该文件的目录并启动终端。 使用 Git 同步: 1git clone -b hexo [your github repository] 安装 hexo 依赖: 123npm install hexo-cli -gnpm installnpm install hexo-deployer-git # 这东西好像会同步到 package.json 但最好安装一下 已经同步完毕。使用 hexo g / hexo s 进行测试。 更新博客前请先 pull 进行同步。 1git pull origin hexo 更新结束后提交修改。 123git add . git commit -m "[comments]" git push origin main:hexo 你可以直接使用 bat 来做到一键完成这些功能。 这样我们就可以在不同的设备上写 hexo 博客了。","link":"/2023/11/04/%E5%9C%A8%E9%9A%8F%E4%BE%BF%E5%93%AA%E4%B8%80%E5%8F%B0%E7%94%B5%E8%84%91%E4%B8%8A%E5%86%99%E5%8D%9A%E5%AE%A2%EF%BC%9F-Hexo-%E5%A4%9A%E7%AB%AF%E5%90%8C%E6%AD%A5/"}],"tags":[{"name":"OI","slug":"OI","link":"/tags/OI/"},{"name":"博客","slug":"博客","link":"/tags/%E5%8D%9A%E5%AE%A2/"}],"categories":[{"name":"OI","slug":"OI","link":"/categories/OI/"},{"name":"博客","slug":"博客","link":"/categories/%E5%8D%9A%E5%AE%A2/"}],"pages":[]}
{"posts":[{"title":"Manacher 算法学习笔记","text":"Manacher 算法于 1975 年发明,用其发明者的名字命名。 Manacher 是一个线性解决回文子串问题的算法。 Manacher 算法适用于处理字符串的所有回文子串,而并非只适用于通常意义上的最长回文子串,具体见下文解释。 前置知识考虑如何描述一个字符串里的回文子串。 比较简单的想法是记该子串的左右端点,将其记为 $[l,r]$。然而对于一个回文子串的子串 $[l+d,r-d]$ 它同样是一个回文子串;除非我们用较为复杂的方法记录这个回文子串的子串,否则需要用另外的空间来描述和储存,这造成了浪费。 另一个利用回文串性质的记法是记录其对称中心和对称长度。例如对于字符串 DBABCBAB 中的子串 ABCBC,我们就可以记其为 $[5,3]$。 对于偶数长度的回文串,我们考虑在每两个字符间插入一个字符,例如 #。同时我们要在头尾插入一些指示字符,辅助下面算法的判断。例如把上面的串变成:$D#B#A#B#C#B#A#B。 通过上述记法结合回文串性质可以发现 $[5,2]$,$[5,1]$ 均为回文子串。我们就可以小改以上这个记法为记录其对称中心和最大对称长度。也就是说 $[5,3]$ 可以说明以 $5$ 为对称中心实际上存在 $3$ 个回文子串。 Manacher 可以用 $O(n)$ 的复杂度求出每一个对称中心的最长对称长度。因此,之前说有人对该算法存在误解,其实我们是可以知道所有回文子串的。 算法考虑一个中心扩展算法。 Unfixed","link":"/2023/11/02/Manacher-%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"title":"P5377 [THUPC2019] 鸽鸽的分割 题解","text":"简要题意连结圆上 $n$ 个点,求最多能够把圆分成几个部分。 前置知识欧拉公式:$F(ace)=E(dge) - V(ertex)+2$ 人话:$\\text{多边形面数} = \\text{边数} - \\text{顶点数} + 2$ 思路将一个圆折叠成一个多面体,你可以进行一些奇妙的空间变换来达到这一点。 那么我们最后会多出一个底面。 因此在我们的这个圆中 $F(n)=E-V+1$ 求 $V$圆上已经有了 $n$ 个点。我们要使得圆内不存在三线共点的情况。 那么考虑每次选择四个顶点画出一个四边形的两条对角线。 于是又会生成 $C_{n}^{4}$ 个顶点。可以证明已经考虑完全了,于是有 V = n + C_{n}^{4}求 $E$原有 $C_{n}^{2}$ 条边,且圆环上的 $n$ 个点互相连接构成 $n$ 条边。 每多一个交点会增加两条多边形边。又有 $2\\times C_{n}^{4}$ 条。 E = n + C_{n}^{2} + 2\\times C_{n}^{4}最后,我们展开这个逆天的柿子: \\begin{aligned} F(n) &= E - V + 1 \\\\ &= n + C_{n}^{2} + 2\\times C_{n}^{4} - n - C_{n}^{4} + 1 \\\\ &= C_{n}^{2} + C_{n}^{4} + 1 \\\\ &= \\dfrac{n(n - 1)}{2} + \\dfrac{n(n - 1)(n - 2)(n - 3)}{4\\times 3 \\times 2} + 1 \\\\ &= \\dfrac{x^4}{24} - \\dfrac{x^3}{4} + \\dfrac{23x^2}{24} - \\dfrac{3x}{4} + 1 \\end{aligned}去 OEIS 上校验结果,正确。","link":"/2023/10/27/P5377-THUPC2019-%E9%B8%BD%E9%B8%BD%E7%9A%84%E5%88%86%E5%89%B2-%E9%A2%98%E8%A7%A3/"},{"title":"P9816 少项式复合幂 题解","text":"简要题意称一个项数小于等于 $20$ 的多项式为一个少项式。 求一个少项式的 $y$ 次复合函数在 $x$ 点上 $f_{y}(x)\\bmod p$ 的值。 解题思路题目强调注意 $m,p$ 的范围,观察发现 $p$ 的范围在 $10^5$ 之内。 关于模运算,它拥有以下显然的性质: (x + y)\\bmod p = (x\\bmod p + y\\bmod p) (x \\times y)\\bmod p = ((x\\bmod p)\\times (y\\bmod p))\\bmod p所以对于一个多项式函数有等式 $f(x) \\bmod p = f(x\\bmod p)\\bmod p$ 存在。不明白的想想你的快速幂为什么对。 f(x)\\bmod p = \\sum_{i = 1}^{m} a_i x^{b_i} \\bmod p = \\sum_{i = 1}^{m} (a_i (x\\bmod p)^{b_i} \\bmod p) \\bmod p如上柿我们可以用 $O(m\\log\\max\\{b\\})$ 的时间预处理出所有 $0\\le x < p$ 的 $f(x)\\bmod p$,$O(1)$ 地快速进行回答。 然后应该初学者都能想到通过 $y$ 次迭代求得 $f_y(x)\\bmod p$,关键在于将迭代的复杂度降低。 考虑进行倍增,因为有 $f_{2^k}(x) = f_{2^{k - 1}}(f_{2^{k - 1}}(x))$。 令 $st_{x,k} = f_{2^k}(x)$ 则我们可以通过 $O(\\log y)$ 的迭代求得答案。 st_{x,k} = \\begin{cases} f(x)\\bmod p & k = 0 \\\\ st_{st_{x,k - 1},k - 1} & \\mathrm{Otherwise.}\\\\ \\end{cases}需要注意的是,因为 $y\\le 10^7$,因此枚举 $k$ 直到 $2^k > 10^7$。 贴个代码这里令 $f_{x,k} = st_{x,k}$。 123456789101112131415161718#define rep(i, l, r) for (int i = (l); i <= (r); ++i)constexpr int Y = 1e7 + 10;rep (i, 0, p - 1) rep (j, 1, m) f[i][0] = (f[i][0] + 1ll * a[j] * fpow(i, b[j]) % p) % p;for (int j = 1; (1 << j) <= Y; ++j) rep (i, 0, p - 1) f[i][j] = f[f[i][j - 1]][j - 1];rep (i, 1, q){ cin >> x >> y; x %= p; for (int k = 30; ~k; --k) if ((1 << k) & y) x = f[x][k]; cout << x << endl;}","link":"/2023/10/29/P9816-%E5%B0%91%E9%A1%B9%E5%BC%8F%E5%A4%8D%E5%90%88%E5%B9%82-%E9%A2%98%E8%A7%A3/"},{"title":"在随便哪一台电脑上写博客?- Hexo 多端同步","text":"将 Github 运用到底! 再来个奇妙小仓库还是太麻烦了,我们使用分支功能。 启用同步在第一用户端的博客根目录下 Git Bash 新建一个仓库。 1git init 然后确保你的 .gitignore 文件里屏蔽了以下目录和文件的提交。 12/.deploy_git /public 添加该仓库到远程仓库列表: 12345git remote add origin [your github repository]# 例如作者本人的:# git remote add origin [email protected]:YttriumWillow/yttriumwillow.github.io.git# 这是 SSH 模式下的提交,你的远程仓库 HTTPS 地址可能是这样# https://github.com/username/username.github.io.git 一路提交更改到 hexo 分支。 1234git add . # 将变更添加到 git 暂存区 git commit -m "[comment]" # 提交本次更改,并附加提交信息git push origin main:hexo # 将本地 main 分支的提交发布到远程仓库的 hexo 分支# 我为了省事用的 main 主分支,有的仓库的默认分支可能是 master 你的 Github 仓库里面就会出现这个分支。 在其他设备上同步如果这是一台全新的设备, 请先安装 Git, Node.js 并更新 npm。 打开你需要同步该文件的目录并启动终端。 使用 Git 同步: 1git clone -b hexo [your github repository] 安装 hexo 依赖: 123npm install hexo-cli -gnpm installnpm install hexo-deployer-git # 这东西好像会同步到 package.json 但最好安装一下 已经同步完毕。使用 hexo g / hexo s 进行测试。 更新博客前请先 pull 进行同步。 1git pull origin hexo 更新结束后提交修改。 123git add . git commit -m "[comments]" git push origin main:hexo 你可以直接使用 bat 来做到一键完成这些功能。 这样我们就可以在不同的设备上写 hexo 博客了。","link":"/2023/11/04/%E5%9C%A8%E9%9A%8F%E4%BE%BF%E5%93%AA%E4%B8%80%E5%8F%B0%E7%94%B5%E8%84%91%E4%B8%8A%E5%86%99%E5%8D%9A%E5%AE%A2%EF%BC%9F-Hexo-%E5%A4%9A%E7%AB%AF%E5%90%8C%E6%AD%A5/"}],"tags":[{"name":"OI","slug":"OI","link":"/tags/OI/"},{"name":"博客","slug":"博客","link":"/tags/%E5%8D%9A%E5%AE%A2/"}],"categories":[{"name":"OI","slug":"OI","link":"/categories/OI/"},{"name":"博客","slug":"博客","link":"/categories/%E5%8D%9A%E5%AE%A2/"}],"pages":[]}
8 changes: 8 additions & 0 deletions css/cyberpunk.css
Original file line number Diff line number Diff line change
Expand Up @@ -11647,8 +11647,16 @@ figure.highlight.foldable div.level-left {
max-width: 960px;
width: 960px;
}
.is-3-column .container {
max-width: 1216px;
width: 1216px;
}
}
@media screen and (min-width: 1472px) {
.is-3-column .container {
max-width: 1408px;
width: 1408px;
}
.is-2-column .container {
max-width: 1152px;
width: 1152px;
Expand Down
8 changes: 8 additions & 0 deletions css/default.css
Original file line number Diff line number Diff line change
Expand Up @@ -11646,8 +11646,16 @@ figure.highlight.foldable div.level-left {
max-width: 960px;
width: 960px;
}
.is-3-column .container {
max-width: 1216px;
width: 1216px;
}
}
@media screen and (min-width: 1472px) {
.is-3-column .container {
max-width: 1408px;
width: 1408px;
}
.is-2-column .container {
max-width: 1152px;
width: 1152px;
Expand Down
8 changes: 8 additions & 0 deletions css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -11646,8 +11646,16 @@ figure.highlight.foldable div.level-left {
max-width: 960px;
width: 960px;
}
.is-3-column .container {
max-width: 1216px;
width: 1216px;
}
}
@media screen and (min-width: 1472px) {
.is-3-column .container {
max-width: 1408px;
width: 1408px;
}
.is-2-column .container {
max-width: 1152px;
width: 1152px;
Expand Down
Loading

0 comments on commit b4f3401

Please sign in to comment.