-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"posts":[{"title":"","text":"准备环境 安装nodejs✅ 安装git✅ 安装hexo✅ 12# 此为全局安装,可能需要sudo权限npm install -g hexo-cli 创建git仓库直接在github主页创建一个新的仓库,此处假设仓库名称为blog_tensorrt 使用hexo建初始博客首先初始化一个博客项目,此处blog可以换成自己想要起的名称。该操作之后在当前目录下会出现一个叫做blog的新的文件夹 1hexo init blog 进入blog文件夹下 1cd blog 可以看到当前的文件夹下有一个themes的文件夹,此时看到里面没有文件,下载icarus主题代码到其中 1git clone [email protected]:ppoffice/hexo-theme-icarus.git /themes/icarus 之后修改_config.yml文件,将theme修改为icarus 1theme: icarus 之后在命令行进行构建 1hexo g 输入生成命令可能会报错,提示有没有安装的包,安装确实的包 1yarn add [email protected] hexo-component-inferno@^1.1.0 hexo-pagination@^2.0.0 hexo-renderer-inferno@^0.1.3 inferno@^7.3.3 inferno-create-element@^7.3.3 接着生成 12# 该命令多执行几次,知道没有新的文件生成hexo g 查看网页初始效果 1hexo s 打开网页http://localhost:4000 自定义博客设计此时博客目录下有文件_config.icarus.yml,修改该文件即可,每一项在icarus官网https://ppoffice.github.io/hexo-theme-icarus/Configuration/icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97-%E4%B8%BB%E9%A2%98%E9%85%8D%E7%BD%AE/#more均有详细的说明,在此不做赘述。 部署网站首先修改_config.yml文件 Site title: eryoyo的博客 subtitle: 坚持✊ description: tensorrt笔记整理 keywords: author: eryoyo language: zh-CN timezone: Asia/Shanghai URLSet your site url here. For example, if you use GitHub Page, set url as ‘https://username.github.io/project‘ url: https://eryoyo.github.io/blog_tensorrt之后进行本地查看 hexo clean hexo g hexo s网站可以在http://localhost:4000/blog_tensorrt里面查看到 之后接着修改_config.yml文件 deploy: type: git repo: [email protected]:eryoyo/blog_tensorrt.git branch: master安装部署需要的包 npm install hexo-deployer-git –save之后部署 hexo deploy在仓库里面setting里面修改github pages的none为master分支,点击save,等待一会之后就可以在访问自己刚刚部署到的网站了 主站建成。","link":"/2023/11/29/Hexo%20Icarus%205.1%20%E6%89%8B%E6%8A%8A%E6%89%8B%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/"},{"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":"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":"通用快读快写模板","text":"Use these templates after using namespace std;Update Info123456789101112131415161718// Forked from Matrix_mlt[498779]// + Original (原生功能)// + Functions// + read() // 2 Overloaded// + readchar() // Non-overloaded// + write() // Non-overloaded// Pull Request from fengziyi[540226]// + Submitted (已追加功能)// + Functions// + readln() // 2 Overloaded// + writespace() // 2 Overloaded// + writeln() // 4 Overloaded// + New Buffer Reader // + RePacked// + Unsubmitted (待完善)// + Float Number Reading Functions// + Big Interger Functions// + ... Standard Version12345678910111213141516171819202122232425namespace IO{ #define reg register template<typename _Tp> inline void read(_Tp& x) { x = 0; char c = getchar(); bool f = 0; while (!std::isdigit(c)) f |= c == 45, c = getchar(); while ( std::isdigit(c)) x = x * 10 + (c ^ 48), c = getchar(); return f ? x = -x : 1, void(); } template<typename _Tp> inline void write(_Tp x) { static char stk[40]; int top = 0; if (!x) return putchar(48), void(); if (x < 0) putchar(45), x = -x; while (x) stk[top++] = x % 10, x /= 10; while (top) putchar(stk[--top] + 48); } // read template<typename _Tp, typename ...Args> inline void read(_Tp& x, Args& ...args) { read(x), read(args...); }}using namespace IO; Extend Functions (Must be used with Std Ver)12345678910111213141516171819202122232425262728namespace ExtIO{ // readchar inline void readchar(char& x) { for (x = getchar(); !std::isalpha(x); x = getchar()); } // readln template<typename _Tp, typename _Tpp> inline void readln(_Tp a[], _Tpp w) { for (reg _Tpp i = 1; i <= w; ++i) read(a[i]); } template<typename _Tp, typename _Tpp> inline void readln(_Tp a[], _Tpp l, _Tpp r) { for (reg _Tpp i = l; i <= r; ++i) read(a[i]); } // writespace template<typename _Tp> inline void writespace(_Tp x) { write(x); putchar(' '); } template<typename _Tp, typename ...Args> inline void writespace(_Tp& x, Args& ...args) { writespace(x), writespace(args...); } // writeln template<typename _Tp> inline void writeln(_Tp x) { write(x); putchar('\\n'); } template<typename _Tp, typename ...Args> inline void writeln(_Tp& x, Args& ...args) { writespace(x), writespace(args...), putchar('\\n'); } template<typename _Tp, typename _Tpp> inline void writeln(_Tp a[], _Tpp w) { for (reg _Tpp i = 1; i <= w; ++i) writespace(a[i]); putchar('\\n'); } template<typename _Tp, typename _Tpp> inline void writeln(_Tp a[], _Tpp l, _Tpp r) { for (reg _Tpp i = l; i <= r; ++i) writespace(a[i]); putchar('\\n'); }};using namespace ExtIO; Special Buffer-Read Version(Use flushout() at the end if writeln() is used)卡常用,高风险12345678910111213141516171819202122232425262728293031323334353637383940#include <cstring>namespace bufIO{ const int _Pu = 1 << 16; const int _d = 32; char buf[_Pu], obuf[_Pu]; char *inl = buf + _Pu, *inr = buf + _Pu; char *outl = obuf, *outr = obuf + _Pu - _d; inline void flushin() { memmove(buf, inl, inr - inl); int rlen = fread(buf + (inr - inl), 1, inl - buf, stdin); if (inl - rlen > buf) { buf[inr - inl + rlen] = EOF; } inl = buf; } inline void flushout() { fwrite(obuf, outl - obuf, 1, stdout), outl = obuf; } template <typename _Tp> inline void read(_Tp &x) { if (inl + _d > inr) { flushin(); } int isne = 0; for (; !isdigit(*inl); ++inl) { isne = (*inl == '-'); } x = (*inl++ - '0'); for (; isdigit(*inl); ++inl) { x = x * 10 + (*inl - '0'); } if (isne) { x = -x; } } template <typename _Tp> inline void writeln(_Tp x, char end = '\\n') { if (outl > outr) { flushout(); } if (x < 0) { *outl++ = '-'; x = -x; } char sta[20]; char *top = sta; do { *top++ = (x % 10) + '0'; x /= 10; } while (x); do { *outl++ = *--top; } while (top != sta); (*outl++) = end; } template<typename _Tp, typename ...Args> inline void read(_Tp& x, Args& ...args) { read(x), read(args...); }}using namespace bufIO;","link":"/2023/11/04/%E9%80%9A%E7%94%A8%E5%BF%AB%E8%AF%BB%E5%BF%AB%E5%86%99%E6%A8%A1%E6%9D%BF/"},{"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":[]} |