介绍
+ +计算机相关的比赛介绍,因为计算机拥有很多的竞赛,不仅仅是保研相关和榜单赛事,也有很多有含金量的比赛。
+希望这个介绍能够帮助到大家。
+ + + + + + + + + + + + + +From 7b298ffcb66829237c5036fec54f874a51ce5977 Mon Sep 17 00:00:00 2001 From: <> Date: Mon, 22 Apr 2024 15:59:05 +0000 Subject: [PATCH] Deployed f165547 with MkDocs version: 1.5.3 --- 404.html | 192 ++- CTF-WP/index.html | 192 ++- basic/index.html | 198 ++- competition/index.html | 1227 +++++++++++++++++ culture/index.html | 192 ++- general/index.html | 196 ++- image/none/index.html | 192 ++- index.html | 192 ++- labs/index.html | 196 ++- major/index.html | 192 ++- manual/index.html | 206 ++- outer/index.html | 1226 ++++++++++++++++ salon/index.html | 196 ++- .../index.html" | 192 ++- search/search_index.json | 2 +- sitemap.xml.gz | Bin 127 -> 127 bytes template/index.html | 192 ++- 17 files changed, 4733 insertions(+), 250 deletions(-) create mode 100644 competition/index.html create mode 100644 outer/index.html diff --git a/404.html b/404.html index f80a351..f9106d5 100644 --- a/404.html +++ b/404.html @@ -224,6 +224,26 @@ +
计算机相关的比赛介绍,因为计算机拥有很多的竞赛,不仅仅是保研相关和榜单赛事,也有很多有含金量的比赛。
+希望这个介绍能够帮助到大家。
+ + + + + + + + + + + + + +general: 通识课
-basic: 数理基础课
-culture:文化素质课
-major:CS 专业类课程
-labs:学校各个实验室的技术栈介绍和项目(包括老师的实验室)
-salon:俱乐部可公开的分享会文档
-CTF-WP:俱乐部参加的CTF比赛题解
+outer: 外专业选修课
+basic: 数理基础课
+culture:文化素质课
+major:CS 专业类课程
+labs:学校各个实验室的技术栈介绍和项目(包括老师的实验室)
+competition: 计算机相关的各个比赛的介绍
+salon:俱乐部可公开的分享会文档
+CTF-WP:俱乐部参加的CTF比赛题解
在 2022 级之后 毕业要求有10个学分的外专业选修课
+ + + + + + + + + + + + + +(\uff61\uff65\u2200\uff65)\uff89\uff9e\u55e8\uff0c\u4f60\u53d1\u73b0\u4e86\u00a0Chive
\u672c\u7f51\u7ad9\u7075\u611f\u6765\u6e90\u4e8e\u6d59\u6c5f\u5927\u5b66\u56fe\u7075\u73ed\u5b66\u4e60\u6307\u5357\u548c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66\u751f\u5b58\u624b\u518c\u3002
Note
\u76ee\u524d\u6211\u4eec\u6b63\u5728\u81f4\u529b\u4e8e\u5411\u8ba1\u7b97\u673a\u5b66\u9662\u5176\u4f59\u4e13\u4e1a\u63d0\u4f9b\u670d\u52a1\uff0c\u6b22\u8fce\u8fdb\u884cContribute
\u6211\u4eec\u5e0c\u671b\u5efa\u7acb\u4e00\u4e2a\u4ed3\u5e93\uff0c\u5bf9\u8fd9\u4e9b\u8ba1\u7b97\u673a\u8bfe\u7a0b\u8fdb\u884c\u4e00\u4e9b\u4ecb\u7ecd\uff0c\u5e76\u8865\u5145\u4e00\u4e9b\u8bfe\u7a0b\u5185\u5bb9\u4f9b\u4e13\u4e1a\u65b0\u4eba\u53c2\u8003\u5b66\u4e60\u3002
\u6b22\u8fce\u5404\u4f4d\u540c\u5b66\u5bf9\u672c\u4ed3\u5e93\u8fdb\u884c\u8d21\u732e\uff01
P.S. \u672c\u7ad9\u57fa\u672c\u4f9d\u636e\u6d59\u5927\u4ed3\u5e93\u6784\u5efa\uff0c\u611f\u8c22\u6d59\u5927\u56fe\u7075\u73ed\u540c\u5b66\u7684\u8d21\u732e\uff0c\u76f8\u5173\u9879\u76ee\u5982\u4e0b\uff1a
\u4ff1\u4e50\u90e8\u4e3b\u9875\uff1a\u7b2c\u4e94\u7a7a\u95f4\u7f51\u7edc\u7a7a\u95f4\u5b89\u5168\u4ff1\u4e50\u90e8 \u8bf7\u5728\u6821\u56ed\u7f51\u73af\u5883\u4e0b\u8bbf\u95ee\uff01
\u8be5\u9879\u76ee\u4e3b\u9875\u5730\u5740\uff1a\u54c8V \u8ba1\u7b97\u673a\u6307\u5357
\u8be5\u9879\u76eeGitHub\u5730\u5740: \u54c8V \u8ba1\u7b97\u673a\u6307\u5357
"},{"location":"manual/","title":"\u9879\u76ee\u7ed3\u6784\u4ecb\u7ecd","text":"-|-.github/workflows #\u8fd9\u91cc\u5b58\u50a8github page\u90e8\u7f72yml\n-|-docs #\u8fd9\u4e2a\u76ee\u5f55\u7528\u4e8e\u5b58\u50a8\u6240\u6709\u6587\u6863\u5185\u5bb9\n |--index.md #HITWH-CS\u7ad9\u70b9\u4e3b\u9875\n |--others.md #\u6216\u8005\u6709\u5176\u4ed6\u9875\u9762\n |--example #\u8fd9\u662f\u4e00\u4e2a\u6837\u4f8b\u76ee\u5f55\n |--index.md #example\u7684\u4e3b\u9875\n |--others1.md #example\u7684\u5177\u4f53\u5176\u4ed6\u5185\u5bb9\n |--others2.md #example\u7684\u5177\u4f53\u5176\u4ed6\u5185\u5bb9\n-|-mkdocs.yml #\u7f51\u7ad9\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5177\u4f53\u5185\u5bb9\u770b\u4e0b\u6587\n-|-requirments.txt #Python\u7684\u9700\u6c42\u6587\u4ef6\uff0c\u5982\u65e0\u5fc5\u8981\uff0c\u52ff\u589e\u5b9e\u4f53 \n
"},{"location":"manual/#_2","title":"\u65b0\u589e\u5185\u5bb9\u8bf4\u660e","text":"\u5982\u679c\u9700\u8981\u65b0\u589e\u677f\u5757\u548c\u9875\u9762\uff0c\u8bf7\u5bf9 mkdocs.yml
\u7684 nav
\u677f\u5757\u4e0b\u8fdb\u884c\u4fee\u6539 \u4e0b\u56fe\u662f\u65b0\u589e\u4e00\u4e2a\u901a\u8bc6\u8bfe general \u7684\u6837\u4f8b \u53ef\u4ee5\u770b\u5230\u4e3b\u9875\u548c\u901a\u8bc6\u8bfe\u662f\u4e24\u4e2a\u677f\u5757\u5185\u5bb9\uff0c\u5176\u5404\u81ea\u5bf9\u5e94\u7684\u6587\u6863\u5185\u5bb9\u663e\u793a\u5728\u5de6\u4fa7\u5bfc\u822a\u680f\uff0c\u5982\u4e0b\u56fe\u6240\u793a \u53ef\u4ee5\u770b\u5230\u4e3b\u9875\u76ee\u5f55\u4e0b\u6709 index.md
\u9ed8\u8ba4\u4e3b\u9875\u548c next.md
\u7684\u6837\u4f8b nav
\u6240\u5bf9\u5e94\u7684\u5c31\u662f\u9879\u76ee\u7ed3\u6784\u4e2d docs
\u6240\u5bf9\u5e94\u7684\u76ee\u5f55\u7ed3\u6784\uff0c general
\u76ee\u5f55\u5bf9\u5e94\u65b0\u589e\u7684\u6838\u5fc3\u8bfe\u7684\u6240\u6709\u5185\u5bb9\uff0c\u4e00\u4e2a\u7248\u5757\u4e00\u4e2a\u76ee\u5f55\uff0c\u65b9\u4fbf\u7ef4\u62a4\uff0c\u4e0b\u9762\u662fgeneral
\u76ee\u5f55\u7684\u5185\u5bb9
\u672c\u7f51\u7ad9\u6b22\u8fce\u4e00\u5207\u8d21\u732e \u4e0d\u8fc7\u8bfe\u7a0b\u5185\u5bb9\u53ea\u9762\u5411HITWH\u7684\u8bfe\u7a0b\u5185\u5bb9\u8303\u56f4\uff0c\u5982\u679c\u4f60\u60f3\u8981\u4e3a\u672c\u7f51\u7ad9\u8fdb\u884c\u8d21\u732e\uff0c\u4ee5\u4e0b\u662f\u4e00\u4e9b\u6307\u5357\u3002
"},{"location":"manual/#_4","title":"\u672c\u5730\u6784\u5efa","text":"\u9879\u76ee\u62c9\u53d6\uff1a
git clone https://github.com/Fifth-Space/HITWH-CS.git\ncd HITWH-CS\n
\u5b89\u88c5 Python \u4f9d\u8d56 pip install -r requirements.txt\n
\u5b89\u88c5\u672c\u6587\u6863\u63d2\u4ef6\uff1a git clone https://github.com/Fifth-Space/mkdocs_plugins.git\ncd mkdocs_plugins\npip install -e .\ncd ..\n
\u5728\u672c\u5730\u8fd0\u884c\uff0c\u786e\u8ba4\u65e0\u8bef\u540e\u518d\u8fdb\u884c\u63a8\u9001 mkdocs serve\n
- \u4e4b\u540e\u5373\u53ef\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\u00a0localhost:8000\u00a0\u9884\u89c8\u7f51\u7ad9"},{"location":"manual/#_5","title":"\u8d21\u732e\u5b88\u5219","text":"\u901a\u8fc7\u00a0PR\uff08\u5373\u00a0Pull Request\uff09\u7684\u5f62\u5f0f\u6765\u8fdb\u884c\u8d21\u732e\uff0c\u5177\u4f53\u6d41\u7a0b\uff1a
\u7b49\u5f85\u7ba1\u7406\u5458\u7684\u5ba1\u6838\u3001\u4fee\u6539\uff0c\u7136\u540e\u5408\u5e76\u5230\u672c\u00a0repo\u00a0\u4e2d
general: \u901a\u8bc6\u8bfe\nbasic: \u6570\u7406\u57fa\u7840\u8bfe\nculture\uff1a\u6587\u5316\u7d20\u8d28\u8bfe\nmajor\uff1aCS \u4e13\u4e1a\u7c7b\u8bfe\u7a0b\nlabs\uff1a\u5b66\u6821\u5404\u4e2a\u5b9e\u9a8c\u5ba4\u7684\u6280\u672f\u6808\u4ecb\u7ecd\u548c\u9879\u76ee\uff08\u5305\u62ec\u8001\u5e08\u7684\u5b9e\u9a8c\u5ba4\uff09\nsalon\uff1a\u4ff1\u4e50\u90e8\u53ef\u516c\u5f00\u7684\u5206\u4eab\u4f1a\u6587\u6863\nCTF-WP\uff1a\u4ff1\u4e50\u90e8\u53c2\u52a0\u7684CTF\u6bd4\u8d5b\u9898\u89e3\n
"},{"location":"template/","title":"<\u8bfe\u7a0b\u540d\u79f0>","text":"CS <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> AI <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> IS <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> SE <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> \u7d2b\u4e01\u9999 <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee>"},{"location":"template/#_2","title":"\u8bfe\u7a0b\u5b66\u4e60\u5185\u5bb9","text":"<\u8bfe\u7a0b\u5b66\u4e60\u5185\u5bb9>
"},{"location":"template/#_3","title":"\u5148\u4fee\u8981\u6c42","text":"<\u5148\u4fee\u8981\u6c42(\u6ca1\u6709\u5c31\u5199\u65e0\u6216\u8005\u7565\u53bb\u8fd9\u4e00\u9879)>
"},{"location":"template/#_4","title":"\u4efb\u8bfe\u6559\u5e08","text":"<\u6559\u5e081><\u6559\u5e082><\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>
<\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>
Note
\u5982\u679c\u53ea\u6709\u4e00\u4e2a/\u7ec4\u8001\u5e08\uff0c\u6216\u8005\u8001\u5e08\u4e4b\u95f4\u5dee\u522b\u4e0d\u5927\uff0c\u53ef\u4ee5\u76f4\u63a5\u5199\u6587\u672c\u3002\u5426\u5219\u5efa\u8bae\u4ee5\u8fd9\u79cd\u5f62\u5f0f\u6765\u5199\uff1a
=== \"<\u6559\u5e081>\"\n\n <\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>\n\n=== \"<\u6559\u5e082>\" \n\n <\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>\n
\u6ce8\u610f\u6559\u5e08\u5de6\u53f3\u7684\u5f15\u53f7\uff0c\u4ee5\u53ca\u6bb5\u843d\u5185\u5bb9\u8981\u5168\u90e8\u7f29\u8fdb 4 \u7a7a\u683c\u3002"},{"location":"template/#_5","title":"\u8bfe\u7a0b\u6559\u6750","text":"<\u6559\u6750\u540d>
(\u53ef\u9009)<\u5bf9\u6559\u6750\u7684\u8bc4\u4ef7\uff08\u5982\u662f\u5426\u7528\u6765\u5e03\u7f6e\u4f5c\u4e1a\uff0c\u4e0a\u8bfe\u6240\u8bb2\u4e0e\u6559\u6750\u7ed3\u5408\u662f\u5426\u7d27\u5bc6\uff0c\u662f\u5426\u53ef\u4ee5\u901a\u8fc7\u6559\u6750\u81ea\u4e3b\u5b66\u4e60\u7b49\uff09>
"},{"location":"template/#_6","title":"\u5206\u6570\u6784\u6210","text":"<\u6559\u5e081><\u6559\u5e082><\u5206\u6570\u6784\u6210\uff0c\u53ef\u5177\u4f53\u4ecb\u7ecd\u5404\u90e8\u5206\uff0c\u5982\u4f5c\u4e1a\u60c5\u51b5\u3001\u5b9e\u9a8c\u5185\u5bb9\u53ca\u5f62\u5f0f\u3001\u8003\u8bd5\u8303\u56f4\u53ca\u5f62\u5f0f\u7b49>
<\u5206\u6570\u6784\u6210\uff0c\u53ef\u5177\u4f53\u4ecb\u7ecd\u5404\u90e8\u5206\uff0c\u5982\u4f5c\u4e1a\u60c5\u51b5\u3001\u5b9e\u9a8c\u5185\u5bb9\u53ca\u5f62\u5f0f\u3001\u8003\u8bd5\u8303\u56f4\u53ca\u5f62\u5f0f\u7b49>
Note
\u540c\u4e0a\uff0c\u5982\u679c\u5404\u6559\u5b66\u73ed\u5206\u6570\u6784\u6210\u4e00\u81f4\u5219\u53ef\u4ee5\u76f4\u63a5\u5199\u6587\u672c\uff0c\u5426\u5219\u5efa\u8bae\u540c\u4e0a\u5f62\u5f0f\u3002
"},{"location":"template/#_7","title":"<\u5176\u4ed6\u53ef\u9009\u9879\u76ee>","text":"\u5305\u62ec \u63a8\u8350\u4e66\u5355\u3001\u53c2\u8003\u7b14\u8bb0\u3001\u5176\u4ed6\u8d44\u6e90\u3001\u8bfe\u7a0b\u5b66\u4e60\u5efa\u8bae\u3001\u4e2a\u4eba\u8bc4\u8bba\u3001\u540e\u7eed\u8bfe\u7a0b \u7b49\uff0c\u6bcf\u4e00\u4e2a\u5360\u4e00\u4e2a\u4e8c\u7ea7\u6807\u9898\uff08##
\uff09
\u53ef\u4ee5\u5c06\u5176\u4ed6\u6587\u4ef6\u7c7b\u578b\u7684\u8d44\u6599\uff08\u5c3d\u91cf\u4e0d\u8981\u592a\u5927\uff09\u4e0a\u4f20\u5230\u540c\u4e00\u76ee\u5f55\u4e2d\uff0c\u7136\u540e\u5728\u9875\u9762\u91cc\u6dfb\u52a0\u6307\u5411\u8d44\u6599\u7684\u94fe\u63a5\uff08[\u6587\u5b57](\u76f8\u5bf9\u8def\u5f84)
\uff09
Note
\u53ef\u4ee5\u53c2\u8003\u5176\u4ed6\u5df2\u7ecf\u57fa\u672c\u5b8c\u6210\u7684\u9875\u9762\u7684 markdown \u6e90\u7801
"},{"location":"CTF-WP/","title":"\u4ecb\u7ecd","text":"WP
"},{"location":"labs/","title":"\u4ecb\u7ecd","text":"\u6821\u5185\u5404\u4e2a\u5b9e\u9a8c\u5ba4\u548c\u8001\u5e08\u5b9e\u9a8c\u5ba4\u7684\u6280\u672f\u6808\u4ee5\u53ca\u9879\u76ee\u4ecb\u7ecd
"},{"location":"salon/","title":"\u4ecb\u7ecd","text":"\u4ff1\u4e50\u90e8\u5185\u90e8\u4ea4\u6d41\u4f1a\u6587\u6863\u5206\u4eab
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/","title":"20240204","text":"\u5185\u5bb9\uff1a\u7ebf\u6027\u4ee3\u6570\u7684\u5e94\u7528\uff0c\u5305\u542b\uff08\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\uff0c\u7b97\u6cd5\uff0c\u5bc6\u7801\u5b66\u7684\u76f8\u5173\u5185\u5bb9\uff09
\u524d\u7f6e\u57fa\u7840\uff1a\u77e9\u9635\u4e58\u6cd5
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#arithmetic-algebra-algorithm","title":"\u7b97\u672f\uff0c\u4ee3\u6570\uff0c\u7b97\u6cd5 | arithmetic, algebra, algorithm","text":"\u5148\u7b80\u5355\u7684\u5f15\u5165\u4e00\u4e0b\uff0c\u4ece\u5c0f\u5b66\u7684 \u7b97\u672f \u5230\u4e2d\u5b66\u7684 \u4ee3\u6570 \u8fd9\u4e24\u8005\u4e4b\u95f4\u7684\u5dee\u522b\u3002
\u7b97\u672f\u8fd0\u7b97\u7684\u7ed3\u679c\u662f\u786e\u5b9a\u7684\u2014\u2014\u4f1a\u53d8\u8d8a\u6765\u8d8a\u7b80\u5355\u3002
\u4ee3\u6570\u8fd0\u7b97\u662f\u6ca1\u6709\u529e\u6cd5\u53bb\u5b9a\u4e49\u201c\u597d\u201d\u8fd0\u7b97\u7684\u3002
\u7b97\u6cd5\u662f\u4e00\u79cd\u81ea\u52a8\u5de5\u4f5c\u7684\u6d41\u7a0b\uff0c\u6309\u7167\u5c0f\u6b65\u5de5\u4f5c\u8fdb\u884c\u81ea\u52a8\u8fd0\u7b97\u3002 \u6bd4\u5982\u4e0b\u9762\u8fd9\u9053\u9898\u76ee\u3002 \u9898\u76ee\uff1a Problem - B - Codeforces
\u8fd9\u662f Codeforces \u5468\u8d5b div2
\u7684\u4e00\u9053\u9898\u76ee\uff0c\u6bd4\u8f83\u7b80\u5355\uff0c\u5927\u5bb6\u53ef\u4ee5\u7b80\u5355\u7684\u601d\u8003\u4e00\u4e0b
\u82f1\u6587\u770b\u7740\u5f88\u957f\uff0c\u5b9e\u9645\u9898\u76ee\u5f88\u7b80\u5355\uff0c\u6709 n
\u4e2a\u5f00\u5173\u548c m
\u76cf\u706f\uff0c\u53ea\u8981\u5b58\u5728\u4e00\u4e2a\u63a7\u5236\u8fd9\u4e2a\u706f\u662f\u5f00\u7740\u7684\u8fd9\u4e2a\u7b49\u5c31\u4f1a\u88ab\u70b9\u4eae\u3002 \u7136\u540e\u7ed9\u4f60 01
\u77e9\u9635\uff0c\u8868\u793a n
\u4e2a\u5f00\u5173\u63a7\u5236 m
\u76cf\u706f\uff0c\u884c\u5217\u4e3a 1
\u8868\u793a\u53ef\u4ee5\u8ba9\u706f\u4eae\u7740\uff0c\u95ee\u4f60\u80fd\u5426\u5220\u6389\u4e00\u4e2a\u5f00\u5173\uff0c\u4f7f\u5f97\u6240\u6709\u706f\u88ab\u70b9\u4eae\u3002
\u601d\u8def\u60f3\u5230\u7684\u5f88\u7b80\u5355\uff0c\u5bf9\u4e8e\u6bcf\u4e00\u884c\u6c42\u548c\uff0c\u5982\u679c\u5bf9\u4e8e\u6bcf\u4e00\u884c\uff0c\u5982\u679c\u53bb\u6389\u67d0\u4e00\u884c\u540e\u8fd9\u4e00\u5217\u7684\u548c\u53d8\u6210 0
\uff0c\u8bf4\u660e\u6709\u706f\u4e0d\u80fd\u5220\u6389\uff0c\u4e00\u4e2a\u7b80\u5355\u7684\u679a\u4e3e\u6cd5\uff0c\u6bcf\u4e00\u6b21\u68c0\u6d4b\u5f00\u5173\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f \\(O(mn)\\)\uff0c\u6240\u4ee5\u603b\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f\\(O(mn^2)\\)\uff0c\u521a\u597d\u591f \\(3s\\) \u7684\u65f6\u95f4\u9650\u5236\u3002\u5f53\u7136\uff0c\u53ef\u4ee5\u7528\u524d\u7f00\u548c\u6216\u8005\u4f4d\u8fd0\u7b97\u7684\u5947\u6280\u6deb\u5de7\u8fdb\u884c\u590d\u6742\u5ea6\u964d\u4f4e\uff0c\u8fd9\u91cc\u4e0d\u8fdb\u884c\u5c55\u5f00\u3002
\u90a3\u4e48\u8fd9\u4e2a\u601d\u8def\u4ece\u7ebf\u6027\u4ee3\u6570\u7684\u89d2\u5ea6\u600e\u4e48\u770b\u5462\u2026\u2026 \u5c31\u662f\u6c42\u7ebf\u6027\u65e0\u5173\u7ec4\uff0c\u5982\u679c\u5728\u7ebf\u6027\u65e0\u5173\u7ec4\u91cc\u9762\u5c31\u662f NO
\uff0c\u5982\u679c\u4e0d\u5728\u7ebf\u6027\u65e0\u5173\u7ec4\u91cc\u9762\u5c31\u662f YES
\uff0c\u5f53\u7136\u7ebf\u6027\u65e0\u5173\u7ec4\u5728\u8fd9\u91cc\u662f\u552f\u4e00\u7684\u3002
\u7ebf\u6027\u65e0\u5173\u7ec4\u4ee3\u8868\u6ca1\u6709\u5197\u4f59\u7684\u4fe1\u606f\uff0c\u8fd9\u4e9b\u4fe1\u606f\u90fd\u662f\u7ebf\u6027\u65e0\u5173\u7684\uff0c\u4e5f\u5c31\u662f\u5411\u91cf\u4e4b\u95f4\u65e0\u6cd5\u7528\u5f7c\u6b64\u4e4b\u95f4\u76f8\u4e92\u8868\u8fbe\u7684\u542b\u4e49\uff0c\u56e0\u6b64\uff0c\u5728\u9898\u76ee\u91cc\uff0c\u5c31\u662f\u68c0\u6d4b\u6709\u6ca1\u6709\u5f00\u5173\u662f\u5197\u4f59\u7684\u3002
\u6e90\u7801\u5b9e\u73b0\u53ef\u4ee5\u53c2\u8003 Python numpy
\u91cc\u9762\u7684 matrix_rank
\u51fd\u6570\u5b9e\u73b0\u3002\u5728 \\(linalg/\\_linalg.py\\) \u76ee\u5f55\u4e0b\u7684 \\(1973\\) \u884c
\u8fd9\u662f\u7ebf\u6027\u4ee3\u6570\u7684\u601d\u60f3\u5728\u7b97\u6cd5\u7ade\u8d5b\u91cc\u7684\u4e00\u4e2a\u7b80\u5355\u5e94\u7528\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#linear-arithmetic","title":"\u7ebf\u6027\u7b97\u672f | Linear Arithmetic","text":"\u7565\u8fc7\u57fa\u7840\u6027\u7684\u5411\u91cf\u52a0\u51cf\u8fd0\u7b97\uff0c\u6211\u4eec\u5148\u91cd\u65b0\u590d\u4e60\u4e00\u4e0b\u6570\u4e58\u3002 $$ 2 \\times\\begin{bmatrix}1\\\\2\\end{bmatrix} = \\begin{bmatrix}2\\\\4\\end{bmatrix} $$ \u4ec0\u4e48\u610f\u601d\uff0c\u8fd9\u662f\u4e00\u4e2a\u51e0\u4f55\u4e0a\u7684\u4f38\u7f29\u8fd0\u7b97\uff0c\u628a\u539f\u6765\u7684\u5411\u91cf\u62c9\u4f38\u4e86 \\(2\\) \u500d\uff0c\u7531\u6b64\u5f15\u5230\u6211\u4eec\u7ebf\u6027\u53d8\u6362\u7684\u5185\u5bb9\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#linear-transformation","title":"\u7ebf\u6027\u53d8\u6362 | Linear Transformation","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_3","title":"\u7ebf\u6027\u4ee3\u6570\u7684\u4e00\u4e9b\u5e94\u7528","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#computer-graphics","title":"\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 | Computer Graphics","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_4","title":"\u70b9\u4e58\u7684\u4f5c\u7528","text":"\u7531\u4e8e\u4e0d\u60f3\u753b\u56fe\u4e86\uff0c\u6240\u4ee5\u865a\u7a7a\u5730\u8bb2\u4e00\u4e0b\u3002 \u70b9\u4e58\u5728\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u9886\u57df\u4e3b\u8981\u7528\u4e8e\u6c42\u89e3\u4e24\u4e2a\u5411\u91cf\u4e4b\u95f4\u7684\u89d2\u5ea6\u3002\u53ef\u4ee5\u60f3\u4e00\u60f3\u8fd9\u4e2a\u89d2\u5ea6\u6709\u4ec0\u4e48\u7528\u3002
\u5411\u91cf\u662f\u4e00\u4e2a\u5373\u6709\u5927\u5c0f\u53c8\u6709\u65b9\u5411\u7684\u91cf\uff0c\u4f46\u662f\u8ba1\u7b97\u673a\u5185\u90e8\u662f\u6ca1\u6709\u65b9\u5411\u7684\u8fd9\u4e2a\u6982\u5ff5\u7684\uff0c\u6240\u4ee5\u7528\u4e00\u4e2a\u53ef\u4ee5\u91cf\u5316\u7684\u89d2\u5ea6\u53bb\u8868\u793a\u5411\u91cf\u4e4b\u95f4\u7684\u65b9\u5411\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_5","title":"\u53c9\u4e58\u7684\u4f5c\u7528","text":"\u8fd9\u91cc\u4e0d\u590d\u4e60\u76f8\u5173\u7684\u5b9a\u4e49\u95ee\u9898\uff0c\u4f46\u662f\u6709\u4e00\u4e9b\u57fa\u672c\u7684\u5e38\u8bc6\u6027\u6982\u5ff5\u3002 $$ \\vec x \\times \\vec y = \\vec z \\quad \\vec y \\times \\vec x = -\\vec z $$ \u8fd9\u6709\u4ec0\u4e48\u4f5c\u7528\u5462\uff0c\u6bd4\u5982\u5728\u6e32\u67d3\u7684\u65f6\u5019\u6211\u53ef\u4ee5\u753b\u4e00\u4e2a\u4e09\u89d2\u5f62\uff0c\u7136\u540e\u7528\u5411\u91cf\u7684\u53c9\u4e58\u5feb\u901f\u5224\u65ad\u8fd9\u4e2a\u70b9\u662f\u4e0d\u662f\u5728\u4e09\u89d2\u5f62\u5185\u90e8\u3002\uff08\u53ef\u4ee5\u6269\u5c55\u5230\u4efb\u610f\u51f8\u5305\uff0c\u6c42\u51f8\u5305\u7684\u76f8\u5173\u7b97\u6cd5\u53ef\u4ee5\u7528\u70b9\u4e58\uff0c\u8be6\u60c5\u53c2\u8be2https://oi-wiki.org/geometry/convex-hull/\uff09
\u8fd9\u91cc\u6211\u4eec\u8ba1\u7b97\u53c9\u4e58\u901a\u5e38\u4f7f\u7528\u53f3\u624b\u7cfb\uff0c\u4f46\u662f\u5728 UE4 \u548c OpenGL \u4e2d\u4f7f\u7528\u7684\u662f\u5de6\u624b\u7cfb\uff0c\u95ee\u9898\u4e0d\u5927\uff0c\u7ffb\u8f6c\u4e00\u4e0b\u5c31\u53ef\u4ee5\u4e86\u3002 \u5411\u91cf\u7684\u53c9\u4e58\u548c\u5411\u91cf\u7684\u70b9\u4e58\u90fd\u53ef\u4ee5\u5199\u6210\u77e9\u9635\u4e58\u6cd5\u7684\u5f62\u5f0f\uff0c\u53ef\u4ee5\u601d\u8003\u4e00\u4e0b\u600e\u4e48\u4e2a\u4e00\u56de\u4e8b\u3002\uff08\u63d0\u793a\uff1a\u4f34\u968f\u77e9\u9635\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_6","title":"\u771f\u6b63\u7684\u53d8\u6362\u4e13\u573a","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_7","title":"\u7f29\u653e\u53d8\u6362","text":"\u6a2a\u8f74\u548c\u7eb5\u8f74\u90fd\u53d8\u6210\u4e86\u539f\u6765\u7684 \\(\\frac{1}{2}\\) \u7528\u6570\u5b66\u7684\u8bed\u8a00\u8868\u8fbe\u5462\u5982\u4e0b $$ x^{'} = sx \\quad y^{'} = sy $$ \u4f5c\u4e3a\u4e00\u4e2a\u5b66\u8fc7\u7ebf\u6027\u4ee3\u6570\u7684\u4eba\u5462\uff0c\u9700\u8981\u5b66\u4f1a\u628a\u8fd9\u4e2a\u8f6c\u6362\u6210\u4e3a\u77e9\u9635\u5f62\u5f0f\uff0c\u5c31\u6bd4\u5982\u8fd9\u4e2a\u6837\u5b50 $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix}=\\begin{bmatrix}s & 0\\\\0&s\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u4e0d\u5747\u5300\u7684\u7f29\u653e\uff0c\u6bd4\u5982 \\(x\\) \u548c \\(y\\) \u4e00\u4e2a\u7f29\u5c0f\u5230 \\(\\frac{1}{2}\\)\uff0c\u4e00\u4e2a\u4fdd\u6301\u4e0d\u53d8\u3002 $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix}=\\begin{bmatrix}s_x & 0\\\\0&s_y\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_8","title":"\u5bf9\u79f0\u53d8\u6362","text":"\u5b66\u8fc7\u8fd1\u4e16\u4ee3\u6570\u7684\u540c\u5b66\u5e94\u8be5\u90fd\u77e5\u9053\uff0c\u77e9\u9635\u8fd0\u7b97\u65f6\u975e\u5e38\u7b26\u5408\u7fa4\u8fd9\u4e2a\u4e1c\u897f\u7684\u5b9a\u4e49\u7684\uff0c\u4f46\u662f\u5982\u679c\u4ece\u9ad8\u4e2d\u6570\u5b66\u63a8\u5bfc\u8fc7\u6765\u5462\uff0c\u7fa4\u4e00\u5f00\u59cb\u8bde\u751f\u5c31\u662f\u4e3a\u4e86\u63cf\u8ff0\u5bf9\u79f0\u6027\u8fd9\u4e2a\u4e1c\u897f\u7684\u3002\u6240\u4ee5\u77e9\u9635\u5e94\u8be5\u662f\u5f88\u8f7b\u677e\u7684\u5c31\u80fd\u628a\u5bf9\u79f0\u8fd9\u4e2a\u4e1c\u897f\u7ed9\u63cf\u8ff0\u51fa\u6765\u7684\u3002
\u63d0\u793a\uff1a\u53ef\u4ee5\u770b\u6210\u662f\u7f29\u653e\u7684\u7279\u6b8a\u60c5\u51b5\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#sheer","title":"\u5207\u53d8\u6362 | Sheer","text":"$$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix}=\\begin{bmatrix}1 & a\\\\0&1\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_9","title":"\u65cb\u8f6c\u53d8\u6362","text":"$$ R_\\theta = \\begin{bmatrix}\\cos \\theta & -\\sin\\theta\\\\sin\\theta&\\cos\\theta\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_10","title":"\u8fdb\u884c\u4e00\u4e9b\u5c0f\u603b\u7ed3","text":"\u53ef\u4ee5\u53d1\u73b0\u4e0a\u8ff0\u6240\u6709\u53d8\u6362\u90fd\u53ef\u4ee5\u5199\u6210\u5f62\u5982 \\(\\(x^{'}=ax+by\\quad y^{'}=cx+dy\\)\\) \u8f6c\u6362\u6210\u4e3a\u77e9\u9635\u5f62\u5f0f\u4e5f\u5c31\u662f $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix} = \\begin{bmatrix}a & b\\\\c&d\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_11","title":"\u5e73\u79fb","text":"\u53ef\u4ee5\u60f3\u4e00\u60f3\u8fd8\u80fd\u4e0d\u80fd\u6109\u5feb\u7684\u5199\u6210\u4e00\u4e2a\u77e9\u9635\u5de6\u4e58\u7684\u5f62\u5f0f\u4e86\uff1f\u6211\u7b80\u6d01\u7684\u77e9\u9635\u5f62\u5f0f\u600e\u4e48\u6ca1\u6709\u4e86\uff1f \u53ea\u80fd\u5199\u6210\u5982\u4e0b\u5f62\u5f0f\uff1a $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix} = \\begin{bmatrix}a & b\\\\c&d\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix}+\\begin{bmatrix}t_x\\\\t_y\\end{bmatrix} $$ \u597d\u50cf\u5f88\u7b80\u5355\uff0c\u4f46\u662f\u8fd9\u5f62\u5f0f\u548c\u4e4b\u524d\u7684\u4e0d\u7edf\u4e00\u3002\u4e5f\u8868\u660e\u5e73\u79fb\u4e0d\u662f\u4e00\u4e2a\u5f88\u6b63\u7ecf\u7684\u7ebf\u6027\u53d8\u6362\u3002\u8fd9\u79cd\u4e0d\u7edf\u4e00\u7684\u5f62\u5f0f\u4e5f\u4e0d\u9002\u5408\u7a0b\u5e8f\u5458\u5077\u61d2\uff0c\u51ed\u5565\u540c\u6837\u662f\u4e8c\u7ef4\u53d8\u6362\uff0c\u5e73\u79fb\u5c31\u8981\u641e\u7279\u6b8a\uff1f
\u7b54\u6848\u662f\u6709\u7edf\u4e00\u5f62\u5f0f\u7684\uff0c\u4f46\u662f\u4ee3\u4ef7\u662f\u4ec0\u4e48\u5462\uff1f\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u65f6\u95f4\u590d\u6742\u5ea6\u548c\u7a7a\u95f4\u590d\u6742\u5ea6\u66f4\u591a\u60c5\u51b5\u4e0b\u662f\u4e0d\u80fd\u540c\u65f6\u517c\u5f97\u7684\u3002
\u8fd9\u6b21\u7b54\u6848\u5f88\u7b80\u5355\uff0c\u5c31\u662f\u628a\u539f\u5148\u7684 \\(2\\times2\\) \u7684\u77e9\u9635\u5347\u7ef4\uff0c\u53d8\u6210 \\(3\\times3\\) \u7684\u77e9\u9635\uff0c\u7528\u66f4\u591a\u7684\u8ba1\u7b97\u65f6\u95f4\u548c\u5b58\u50a8\u7a7a\u95f4\u6362\u53d6\u4e00\u4e2a\u66f4\u52a0\u7edf\u4e00\u7684\u8ba1\u7b97\u5f62\u5f0f\u3002
\u9996\u5148\u5148\u8bb2\u4e00\u4e0b\u77e9\u9635\u5347\u7ef4\u4e4b\u540e\uff0c\u6211\u4eec\u5bf9\u539f\u6765\u4e8c\u7ef4\u7684\u70b9\u548c\u5411\u91cf\u505a\u4e86\u4e9b\u4ec0\u4e48\u3002 \u70b9 \\(dot = (x,\\ y,\\ 1)^{T}\\) \u5411\u91cf \\(vec = (x,\\ y,\\ 0)^{T}\\) 1\u548c0\u5728\u8fd9\u91cc\u8d77\u5230\u4e86\u4e00\u4e2a\u8868\u793a\u8eab\u4efd\u7684\u4f5c\u7528\uff0c\u540c\u65f6\uff0c\u5411\u91cf\u5177\u6709\u5411\u91cf\u4e0d\u53d8\u6027\uff0c\u56e0\u6b64\u672b\u5c3e\u4e3a 0 - \u5411\u91cf + \u5411\u91cf = \u5411\u91cf - \u5411\u91cf - \u5411\u91cf = \u5411\u91cf - \u70b9 - \u70b9 = \u5411\u91cf - \u70b9 + \u5411\u91cf = \u70b9 - \u70b9 + \u70b9 = \uff1f\uff08\u6839\u636e\u67d0\u79cd\u6269\u5145\u5b9a\u4e49\uff0c\u8868\u793a\u4e24\u4e2a\u70b9\u7684\u4e2d\u70b9\uff09
\u6269\u5145\u5b9a\u4e49\u5982\u4e0b\uff1a\\((x,\\ y,\\ w)^T\\) \u662f\u8868\u793a\u4e8c\u7ef4\u7684\u70b9\\((x/w,\\ y/w,\\ 1)^T\\)
\u56e0\u6b64\u7edf\u4e00\u5f62\u5f0f\u5982\u4e0b $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\\\1\\end{bmatrix} = \\begin{bmatrix}a & b & t_x\\\\c&d&t_y\\\\0&0&1\\end{bmatrix}\\begin{bmatrix}x\\ y\\\\1\\end{bmatrix} $$ \u5e0c\u671b\u5199\u5230\u8fd9\u91cc\u80fd\u66f4\u597d\u7684\u5e2e\u4f60\u7406\u89e3\u5f88\u591a\u6559\u79d1\u4e66\u4e0a\u7a81\u7136\u5192\u51fa\u7684 \u56db\u5143\u6570 \u8fd9\u4e2a\u5947\u5999\u7684\u6982\u5ff5\uff0c\u56e0\u4e3a\u90a3\u662f\u5728\u4e09\u7ef4\u7a7a\u95f4\u4e2d\uff0c\u989d\u5916\u5347\u4e86\u4e00\u7ef4\u3002\uff0801\u4f5c\u4e1a\u5149\u6805\u5316\u5c55\u793a\uff09
\u4f46\u662f\u8fd9\u8fdc\u8fdc\u4e0d\u662f\u56fe\u5f62\u5b66\uff0c\u4ed6\u53ea\u662f\u5165\u95e8\uff0c\u751a\u81f3\u95e8\u90fd\u6ca1\u6709\u5165\u3002\u66f4\u6df1\u4e00\u70b9\u7684\u6bd4\u5982\u6444\u50cf\u5934\u7684\u65cb\u8f6c\uff0c\u89c6\u56fe\u7684\u53d8\u6362\u90fd\u6ca1\u6709\u8bb2\u5230\uff0c\u8fd9\u4e9b\u4f9d\u65e7\u5c5e\u4e8e\u77e9\u9635\u53d8\u6362\u7684\u8303\u7574\uff0c6\u4e2a\u81ea\u7531\u5ea6\u5bfc\u81f4\u77e9\u9635\u8d8a\u6765\u8d8a\u96be\u5199\uff0c\u6240\u4ee5\u5bf9\u7ebf\u6027\u4ee3\u6570\u7684\u529f\u5e95\u63d0\u51fa\u4e86\u5f88\u9ad8\u7684\u8981\u6c42\u3002
\u5149\u6805\u5316\uff0c\u5149\u7ebf\u8ffd\u8e2a\uff0c\u8f90\u5c04\u5ea6\u91cf\u5b66\uff0c\u57fa\u4e8e\u7269\u7406\u7684\u6e32\u67d3\uff0c\u4ee5\u53ca\u5230\u6700\u540e\u8fdb\u884c\u6e38\u620f\u5f15\u64ce\u7684\u5f00\u53d1\uff0c\u9700\u8981\u6570\u636e\u7ed3\u6784\uff0c\u9700\u8981\u7b97\u6cd5\uff0c\u9700\u8981\u4e3a\u4e86\u66f4\u903c\u771f\u7684\u56fe\u7247\u53bb\u69a8\u5e72GPU\u7684\u6027\u80fd\u3002\u8fd9\u90fd\u662f\u56fe\u5f62\u5b66\u3002
\u4e2d\u56fd\u79d1\u6280\u5927\u5b66\u6709\u4e00\u5957\u5c5e\u4e8e\u81ea\u5df1\u7684\u56fe\u5f62\u5b66Lab\uff0c\u897f\u5b89\u4ea4\u901a\u5927\u5b66\u57282024\u5e74\u4e5f\u5728\u9010\u6b65\u5f00\u53d1\u81ea\u5df1\u7684\u56fe\u5f62\u5b66\u4f5c\u4e1a\u4ee3\u7801\u6846\u67b6\uff0c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66\u548c\u6d59\u6c5f\u5927\u5b66\u4f1a\u5728\u672c\u79d1\u9636\u6bb5\u8bb2\u4e00\u70b9\u8499\u7279\u5361\u6d1b\u6e32\u67d3\u7684\u5185\u5bb9\uff0c\u6b63\u89c6\u81ea\u5df1\u4e0e\u5176\u4ed6\u5b66\u6821\u672c\u79d1\u751f\u4e4b\u95f4\u7684\u5dee\u8ddd\uff0c\u52aa\u529b\u8fdb\u6b65\u3002
\u56fe\u5f62\u5b66\u662f\u6982\u7387\u8bba\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u7269\u7406\u5b66\u90fd\u9700\u8981\u7684\u4e00\u95e8\u5b66\u79d1\uff0c\u53cd\u6b63\u611f\u89c9\u633a\u597d\u73a9\u7684\uff0c\u6bd4\u5982\u8499\u7279\u5361\u6d1b\u79ef\u5206\u3002
talk is cheap, show me the code
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_12","title":"\u7b97\u6cd5","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_13","title":"\u77e9\u9635\u5feb\u901f\u5e42","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_14","title":"\u5feb\u901f\u5e42","text":"\u6c42 \\(a^b\\ mod\\ c\\) \u7684\u95ee\u9898\u3002 \u5f88\u591a\u4eba\u4f1a\u89c9\u5f97\u8fd9\u5f88\u7b80\u5355\uff0c\u4f46\u662f\u5982\u679c \\(b\\) \u5f88\u5927\u5462\uff1f $$ a^{2b} = (a^2)^b \\quad a^{2b+1} = a\\times (a^2)^b $$ \u5982\u6b64\u4e0d\u65ad\u7684\u4e8c\u5206\u4e0b\u53bb\u5c31\u53ef\u4ee5\u5f97\u5230\u7b54\u6848\uff0c\u7528\u5230\u7684\u4e5f\u662f\u4e8c\u5206\u7684\u601d\u60f3\u3002 \u4e3e\u4e2a\u4f8b\u5b50\u5427\uff0c\u6bd5\u7adf\u4e0a\u9762\u7684\u7b97\u5f0f\u8fd8\u662f\u592a\u62bd\u8c61\u4e86 $$ a^{13} = a^{(1101)_2} = a^8 \u00b7 a^4\u00b7a^1 $$ \u8fd9\u6837\u6211\u4eec\u53ea\u9700\u8981\u77e5\u9053 \\(a^1,a^2,...a^{2^n}\\) \u5c31\u53ef\u4ee5\u5feb\u901f\u7684\u7b97\u51fa \\(a^{2^{n+1}}\\) \u7684\u5e42\u6b21\u3002\u53ea\u9700\u8981\u5c06\u5bf9\u5e94\u4e8c\u8fdb\u5236\u4f4d\u4e3a 1 \u7684\u6574\u7cfb\u6570\u5e42\u4e58\u8d77\u6765\u5c31\u884c\u4e86\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a
long long quick_pow(long long a, long long b)\n{ \n long long res = 1; \n while (b > 0) { \n if (b & 1) res = res * a; \n a = a * a; \n b >>= 1; \n } \n return res; \n}\n
\u53ef\u4ee5\u81ea\u5df1\u6839\u636e\u8fd9\u4e2a\u539f\u7406\u53bb\u641e\u641e\u5feb\u901f\u4e58\u6cd5\u3002"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_15","title":"\u77e9\u9635\u4e58\u6cd5","text":"\u61d2\u5f97\u8bb2\uff0c\u7ebf\u4ee3\u5e94\u8be5\u8fd8\u6ca1\u5fd8\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_16","title":"\u771f\u6b63\u7684\u77e9\u9635\u5feb\u901f\u5e42","text":"\u77e9\u9635\u5feb\u901f\u5e42\uff0c\u987e\u540d\u601d\u4e49\uff0c\u5c31\u662f \u77e9\u9635\u4e58\u6cd5 + \u5feb\u901f\u5e42\u3002\u597d\u7684\u6211\u8bb2\u5b8c\u4e86\uff08\u4e0d\u662f\uff09 \u4f46\u662f\u5f88\u591a\u4eba\u63a5\u89e6\u77e9\u9635\u5feb\u901f\u5e42\u5e94\u8be5\u662f\u5728\u8ba1\u7b97\u6590\u6ce2\u90a3\u5951\u6570\u5217\u90a3\u8fb9\u63a5\u89e6\u5230\u7684\uff0c\u7136\u800c\u5e76\u6ca1\u6709\u8fdb\u884c\u4e00\u4e2a\u6df1\u5165\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_17","title":"\u6590\u6ce2\u90a3\u5951\u6570\u5217","text":"\u4f46\u662f\u8fd8\u662f\u5148\u6e29\u4e60\u4e00\u4e0b\u6590\u6ce2\u90a3\u5951\u6570\u5217\u600e\u4e48\u7528\u77e9\u9635\u52a0\u901f\u6c42\u7684\uff0c\u521a\u624d\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u4e1c\u897f\u5e0c\u671b\u8fd8\u6ca1\u6709\u5fd8\u5e72\u51c0 $$ \\begin{bmatrix}F_{n-1} & F_{n-2}\\end{bmatrix}\\begin{bmatrix}1&1\\\\1&0\\end{bmatrix} = \\begin{bmatrix}F_{n} & F_{n-1}\\end{bmatrix} $$
\u5b9a\u4e49\u521d\u59cb\u77e9\u9635 \\(\\text{ans} = \\begin{bmatrix}F_2 & F_1\\end{bmatrix} = \\begin{bmatrix}1 & 1\\end{bmatrix}, \\text{base} = \\begin{bmatrix} 1 & 1 \\\\ 1 & 0 \\end{bmatrix}\u3002\\)
\u90a3\u4e48\uff0c\\(F_n \u5c31\u7b49\u4e8e \\text{ans} \\text{base}^{n-2}\\) \u8fd9\u4e2a\u77e9\u9635\u7684\u7b2c\u4e00\u884c\u7b2c\u4e00\u5217\u5143\u7d20\uff0c\u4e5f\u5c31\u662f \\(\\begin{bmatrix}1 & 1\\end{bmatrix} \\begin{bmatrix} 1 & 1 \\\\ 1 & 0 \\end{bmatrix}^{n-2}\\)\u7684\u7b2c\u4e00\u884c\u7b2c\u4e00\u5217\u5143\u7d20\u3002
const int mod = 1000000007;\n\nstruct Matrix {\n int a[3][3];\n\n Matrix() { memset(a, 0, sizeof a); }\n\n Matrix operator*(const Matrix &b) const {\n Matrix res;\n for (int i = 1; i <= 2; ++i)\n for (int j = 1; j <= 2; ++j)\n for (int k = 1; k <= 2; ++k)\n res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % mod;\n return res;\n }\n} ans, base;\n\nvoid init() {\n base.a[1][1] = base.a[1][2] = base.a[2][1] = 1;\n ans.a[1][1] = ans.a[1][2] = 1;\n}\n\nvoid qpow(int b) {\n while (b) {\n if (b & 1) ans = ans * base;\n base = base * base;\n b >>= 1;\n }\n}\n\nint main() {\n int n = read();\n if (n <= 2) return puts(\"1\"), 0;\n init();\n qpow(n - 2);\n println(ans.a[1][1] % mod);\n}\n
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#hdu-1005-number-sequence","title":"HDU 1005 Number Sequence","text":"\\(\\text{\u7ed9\u51fa\u4e00\u4e2a\u6570\u5217\u5b9a\u4e49\u5982\u4e0b\uff1a}f(1)=1,f(2)=1,f(n)=Af(n-1)+Bf(n-2),\\text{\u8ba1\u7b97}f(n)\\) $$ \\begin{bmatrix}F(n-1) \\ F(n-2)\\end{bmatrix}\\begin{bmatrix}A&B\\\\1&0\\end{bmatrix} = \\begin{bmatrix}F(n) \\ F_(n-1)\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lightoj-1070-algebraic-problem","title":"LightOJ 1070 Algebraic Problem","text":"\u7ed9\u51fa \\(a+b\\) \u548c \\(ab\\) \u7684\u503c\uff0c\u6c42\\(a^n+b^n\\) \u7b54\u6848\u5bf9 \\(2^{64}\\) \u53d6\u6a21
\u5148\u8bf4\u6a21\u6570\uff0c\u8fd9\u4e2a\u6a21\u6570\u5f88\u597d\uff0c\u76f4\u63a5\u5f00 unsigned long long
\u81ea\u7136\u6ea2\u51fa\u5c31\u53ef\u4ee5\u4e86\u3002\u867d\u7136\u53ef\u80fd\u4e0d\u5b89\u5168 $$ (a^n+b^n)(a+b)=(a^{n+1}+b^{n+1}+ab(a^{n-1}+b^{n-1})) $$ \u4e8e\u662f\uff0c\u4ee4 \\(A =a+b,B=ab,F(n) =a^n+b^n\\)\uff0c\u6709 $$ \\begin{bmatrix}A&-B\\\\1&0\\end{bmatrix}\\begin{bmatrix}F(n) \\ F(n-1)\\end{bmatrix} = \\begin{bmatrix}F(n+1) \\ F_(n)\\end{bmatrix} $$ \u6240\u4ee5\u8fd9\u4e5f\u662f\u4e00\u79cd\u8fed\u4ee3\u7684\u601d\u60f3\uff08\u725b\u987f\u8fed\u4ee3\u6cd5\u7b97\u6839\u53f7\uff09 \u77e9\u9635\u5feb\u901f\u5e42\u53ef\u4ee5\u7528\u6765\u52a0\u901f\u52a8\u6001\u89c4\u5212\uff0c\u8fd8\u6709\u5e7f\u4e49\u7684\u77e9\u9635\u4e58\u6cd5\u4ee5\u53ca\u8f6c\u79fb\u77e9\u9635\u7684\u76f8\u5173\u64cd\u4f5c\uff0c\u4f46\u662f\u8fd9\u91cc\u4e0d\u60f3\u6d89\u53ca\uff0c\u56e0\u4e3a\u6709\u70b9\u8d85\u7eb2\u4e86\uff0c\u6709\u7684\u8fd8\u662f\u63a7\u5236\u8bba\u90a3\u8fb9\u7684\u5185\u5bb9\u3002
\u5b9e\u9645\u4e0a\uff0c\u7279\u5f81\u5411\u91cf\u8fd8\u80fd\u7528\u6765\u6c42\u89e3\u5fae\u5206\u65b9\u7a0b\uff0c\u56e0\u4e3a\u79ef\u5206\u548c\u5fae\u5206\u90fd\u662f\u7ebf\u6027\u8fd0\u7b97\uff0c\u4f46\u662f\u8fd9\u91cc\u5c31\u4e0d\u5c55\u5f00\u4e86\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#25000000000","title":"\u4ef7\u503c\u00a0$25,000,000,000\u7684\u7279\u5f81\u5411\u91cf","text":"Google \u6210\u529f\u7684\u79d8\u8bc0\uff1a\u4e3a\u4e92\u8054\u7f51\u4e0a\u6240\u6709\u7684\u9875\u9762\u91cd\u8981\u6027\u6392\u5e8f
\u63a8\u8350\u7cfb\u7edf\uff1a\u5982\u4f55\u4e3a\u4f60\u9884\u6d4b\u5bf9\u5546\u54c1\u7684\u8bc4\u5206\uff1f
Alice Bob Cathy Davy \u82f9\u679c 1 \uff1f 1 \uff1f \u6a59\u5b50 \uff1f \uff1f \uff1f 3 \u9999\u8549 3 \uff1f \uff1f \uff1f \u897f\u74dc 5 4 \uff1f \uff1f\u77e9\u9635\u5206\u89e3\uff1a\\(M_{m\\times n}=P_{m\\times k}\\times Q_{k\\times {n}}\\)\u200b \\(k\\)\u00a0\u662f\u9690\u85cf\u7684 \u201c\u7ef4\u5ea6\u201d (Latent factor model) - \u5982\u679c\u00a0\\(k\\)\u00a0\u5f88\u5c0f\uff0c\u6211\u4eec\u5c31\u6709\u8db3\u591f\u7684\u6570\u636e\u6c42\u89e3\u51fa \u201c\u6700\u5408\u9002\u201d \u7684\u00a0\\(P\\)\u00a0\u548c\u00a0\\(Q\\) - \u6bcf\u4e2a\u4eba\u5bf9\u7269\u54c1\u7684\u504f\u597d\u662f\u4e00\u7cfb\u5217\u7279\u5f81\u7684\u7ebf\u6027\u7ec4\u5408
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#crypto","title":"\u5bc6\u7801\u5b66 | Crypto","text":"\u4eca\u5929\u7684\u5bc6\u7801\u5b66\u5185\u5bb9\u662f\u683c\u5bc6\u7801\u7684\u4e13\u573a\uff0c\u662f\u5bc6\u7801\u5b66\u7684\u4e00\u4e9b\u524d\u6cbf\u7814\u7a76\u5185\u5bb9\u4e86\uff0c\u5c5e\u4e8e\u73b0\u4ee3\u5bc6\u7801\u5b66\u518d\u5f80\u540e\u7684\u540e\u91cf\u5b50\u65f6\u4ee3\u5bc6\u7801\u5b66\u7684\u5185\u5bb9\uff0c\u6574\u70b9\u73b0\u4ee3\u7684\uff0c\u4f46\u662f\u65e0\u52a0\u89e3\u5bc6\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u53ea\u5173\u5fc3\u4ec0\u4e48\u662f\u683c\uff0c\u56e0\u6b64\u662f\u5802\u5802\u6b63\u6b63\u7684\u6570\u5b66\u8bfe\u3002 \u53e4\u5178\u7684\u5bc6\u7801\u6ca1\u5565\u597d\u73a9\u7684\uff0c\u73b0\u5728\u9898\u76ee\u51fa\u7684\u548c\u8003\u8111\u6d1e\u662f\u4e00\u6837\u7684\uff0c\u53ea\u6709\u5b8c\u6574\u7684\u9006\u5411\u4e86\u51fa\u9898\u4eba\u7684\u8111\u6d1e\u624d\u80fd\u505a\u51fa\u6765\u3002\uff08\u67d0\u79cd\u7a0b\u5ea6\u4e0a\u7684\u9006\u5411\uff09 \u73b0\u4ee3\u5bc6\u7801\u5b66\u6a21\u5757\u7684\u8bdd\uff0c\u7b97\u6cd5\u7684\u5b9e\u73b0\u5fc5\u4e0d\u53ef\u5c11\uff0c\u4f46\u662f\u8981\u6574\u70b9\u73b0\u4ee3\u7684\u8bdd\u5e94\u8be5\u662f\u5b89\u5168\u8bc1\u660e\u90a3\u8fb9\u3002
\u5148\u4ecb\u7ecd\u4e00\u4e0b\u683c\u5bc6\u7801\u7684\u6210\u5c31\uff08\uff1f\uff09 \u5df2\u7ecf\u516c\u5e03\u76844\u4e2aNIST\u6297\u91cf\u5b50\u6807\u51c6\u4f18\u80dc\u7b97\u6cd5\u4e2d\uff0c\u67093\u4e2a\u662f\u683c\u5bc6\u7801\uff0c\u5360\u6bd4\u8fbe\u5230\u4e86\u60ca\u4eba\u768475%\uff0c\u9065\u9065\u9886\u5148\u4e8e\u5176\u4ed6\u7b97\u6cd5\u3002\uff08\u622a\u6b62\u52302022\u5e749\u6708\uff09
\u5728 7 \u4e2a\u6b63\u5f0f\u5165\u9009\u7b2c\u4e09\u8f6e\u7684\u7b97\u6cd5\u4e2d\uff0c\u67095\u4e2a\u90fd\u5c5e\u4e8e\u683c\u5bc6\u7801\u7684\u8303\u7574\uff0c\u800c\u4e0e\u6b64\u540c\u65f6\uff0c\u5728\u6211\u56fd2019\u5e74\u5bc6\u7801\u5b66\u4f1a\u4e3e\u529e\u7684\u540e\u91cf\u5b50\u5bc6\u7801\u7b97\u6cd5\u7ade\u8d5b\u4e2d\uff0c\u683c\u5bc6\u7801\u4e5f\u5728\u5176\u4e2d\u5360\u636e\u4e86\u76f8\u5f53\u5927\u7684\u6bd4\u4f8b\u3002
\u8fd1\u4ee3\u683c\u5bc6\u7801\u7684\u65f6\u95f4\u7ebf
Lattice\u53ef\u4ee5\u88ab\u60f3\u8c61\u6210\u662f\u4e00\u4e2a\u7a7a\u95f4\u4e2d\u5f88\u591a\u6709\u89c4\u5f8b\u5206\u5e03\u7684\u3001\u79bb\u6563\u7684\u70b9\u3002 \\(n\\)\u7ef4\u7a7a\u95f4\u4e2d\u6700\u7b80\u5355\u7684 Lattice \u5c31\u662f Integer Lattice\uff08\u6574\u6570\u683c\uff09\u3002\u6574\u6570\u683c\u4e2d\u6700\u7b80\u5355\u7684\u5c31\u662f\u57fa\u4e8e\u7b1b\u5361\u5c14\u5750\u6807\u7cfb\u7684\\(i,j\\)...\u7b49\u57fa\u5411\u91cf\u7ec4\u6210\u7684\u7a7a\u95f4\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#latticebases","title":"Lattice\u4e0eBases\uff08\u683c\u4e0e\u57fa)","text":"\u66f4\u597d\u7684\u63cf\u8ff0\u4e00\u4e2a\u683c\u7684\u65b9\u6cd5\u662f\u4f7f\u7528\u57fa\u5411\u91cf\u3002
\u6211\u4eec\u5047\u8bbe\u4e00\u4e2a\u683c\u62e5\u6709\u57fa\u5411\u91cf\\(b_1,b_2...b_n\\)\u3002\u90a3\u4e48\u8fd9\u4e2aLattice\u5c31\u662f\u5b83\u7684\u57fa\u5411\u91cf\u7684\u4efb\u610f\u7ebf\u6027\u7ec4\u5408\u7684\u96c6\u5408\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u628a\u6240\u6709\u57fa\u5411\u91cf\u7ec4\u5408\u6210\u77e9\u9635 \\(B\\) \u6765\u8868\u793a\u3002 \u6ce8\u610f\uff0c\u4e00\u4e2a\u683c\u53ef\u4ee5\u6709\u591a\u4e2a\u57fa\u5e95\uff0c\u4e0d\u662f\u4e00\u4e00\u5bf9\u5e94\u7684\u5173\u7cfb\u3002 \u5982\u679c\u7cfb\u7edf\u6027\u7684\u5b9a\u4e49\u4e00\u4e0bLattice\u7684\u8bdd\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u8bf4Lattice\u662f \\(R^n\\) \u8fd9\u4e2a\u7a7a\u95f4\u4e2d\u7684\u4e00\u4e2a\u79bb\u6563\u7684\u3001\u5177\u6709\u52a0\u6cd5\u8fd0\u7b97\u7684\u5b50\u7fa4\uff08A discrete additive subgroup\uff09\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lattice_2","title":"Lattice \u7684\u57fa\u672c\u5c5e\u6027","text":"\u6211\u4eec\u77e5\u9053\uff0c\u5728\u4e00\u4e2a\u7ebf\u6027\u7a7a\u95f4\u91cc\u9762\uff0c\u4e00\u4e2a\u7a7a\u95f4 \\(V\\) \u7684 Determinant\uff08\u884c\u5217\u5f0f\uff09\\(det(V)\\) \u4ee3\u8868\u4e86\u8fd9\u4e2a\u7a7a\u95f4\u6240\u6709\u7684\u57fa\u5411\u91cf \\(b_i\\) \u6240\u7ec4\u6210\u7684\u51e0\u4f55\u4f53\u7684\u4f53\u79ef\u3002\u5728\u4e8c\u7ef4\u7a7a\u95f4\u91cc\uff0c\u4e24\u4e2a\u57fa\u5411\u91cf \\(b_1,b_2\\) \u7ec4\u6210\u7684\u5e73\u884c\u56db\u8fb9\u5f62\u7684\u9762\u79ef\u5c31\u662f\u8fd9\u4e2a\u7a7a\u95f4\u7684\u884c\u5217\u5f0f\u3002
\u540c\u7406\u53ef\u5f97\uff0c\u4e00\u4e2aLattice\u7684\u884c\u5217\u5f0f\u4e5f\u662f\u4e00\u6837\u7684\u2014\u2014\u5bf9\u5e94\u7684\u57fa\u5411\u91cf\u6240\u7ec4\u6210\u7684\u5e73\u884c\u516d\u9762\u4f53\u7684\u4f53\u79ef\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lattice_3","title":"Lattice \u7684\u5bc6\u5ea6","text":"\u6211\u4eec\u53ef\u4ee5\u7528\u4e00\u4e2aLattice\u7684Determinant\u6765\u8861\u91cf\u8fd9\u4e2a\u683c\u7684\u70b9\u9635\u5206\u5e03\u7684\u5bc6\u5ea6\u3002
\u9996\u5148\uff0c\u6211\u4eec\u628a\u4e0a\u4e00\u90e8\u5206\u57fa\u5411\u91cf\u7ec4\u6210\u7684\u591a\u9762\u4f53\u7684\u4e2d\u5fc3\u632a\u5230\u539f\u70b9\u4e0a\u6765\u3002\u8fd9\u6837\uff0c\u7a7a\u95f4 \\(P\\) \u4ecd\u7136\u4fdd\u6301\u76f8\u540c\u7684\u4f53\u79ef\u3002
\u968f\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u628a\u8fd9\u4e2a\u591a\u9762\u4f53\u590d\u5236\u591a\u4efd\uff0c\u7136\u540e\u5e73\u79fb\u5230\u6bcf\u4e00\u4e2aLattice\u4e2d\u7684\u70b9\u4e0a\u3002\u8fd9\u6837\u6211\u4eec\u5c31\u4f1a\u5f97\u5230\u5f88\u591a\u4efd \\(P\\)\uff0c\u5e76\u4e14\u8fd9\u4e9b\u591a\u9762\u4f53\u53ef\u4ee5\u5e73\u5206\u6574\u4e2a\u591a\u7ef4\u7a7a\u95f4 \\(R^n\\)\u3002
\u6b64\u65f6\uff0c\u6211\u4eec\u5982\u679c\u5728\u8fd9\u4e2a\u7a7a\u95f4\u4e2d\u4efb\u610f\u7684\u753b\u4e00\u4e2a\u7403\u4f53\uff08\u591a\u7ef4\u7a7a\u95f4\u5373\u8d85\u7403\u4f53\uff09\uff0c\u7136\u540e\u53ef\u4ee5\u6570\u6570\u770b\u8fd9\u4e2a\u7403\u4f53\u4e2d\u8986\u76d6\u4e86\u591a\u5c11Lattice\u91cc\u7684\u70b9\u3002\u70b9\u7684\u6570\u91cf\u5e73\u5747\u4e8e\u7403\u4f53\u7684\u4f53\u79ef\uff0c\u5c31\u662f\u8fd9\u4e2a\u683c\u7684\u5bc6\u5ea6\u4e86\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_21","title":"\u6700\u77ed\u8ddd\u79bb","text":"\u6211\u4eec\u4e00\u822c\u7528 \\(\\lambda_1\\) \u6765\u5b9a\u4e49\u6574\u4e2a\u683c\u4e2d\u70b9\u4e0e\u70b9\u4e4b\u95f4\u6700\u77ed\u7684\u8ddd\u79bb\u3002\u4e00\u822c\u4e3a\u4e86\u65b9\u4fbf\u7406\u89e3\uff0c\u6211\u4eec\u5c31\u628a\u5176\u4e2d\u7684\u4e00\u4e2a\u70b9\u8bbe\u7f6e\u6210\u5750\u6807\u8f74 \\(O\\) \u70b9\uff0c\u7136\u540e \\(\\lambda_1\\)\u5c31\u53d8\u6210\u4e86\u8ddd\u79bb \\(O\\) \u70b9\u8ddd\u79bb\u6700\u8fd1\u7684\u683c\u70b9\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_22","title":"\u8ddd\u79bb\u51fd\u6570\u4e0e\u8986\u76d6\u534a\u5f84","text":"\u7ed9\u5b9a\u4efb\u610f\u4e00\u4e2a\u70b9 \\(t\\)\uff08\u8fd9\u4e2a\u70b9\u4e0d\u9700\u8981\u5728Lattice\u4e0a\uff09\uff0c\u6211\u4eec\u53ef\u4ee5\u5b9a\u4e49\u8ddd\u79bb\u51fd\u6570 \\(\\mu(t,L)\\) \u4e3a\u8fd9\u4e2a\u70b9\u5230\u9644\u8fd1\u7684Lattice\u70b9\u7684\u6700\u77ed\u8ddd\u79bb\u3002
\u540c\u7406\u53ef\u5f97\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u5de6\u53f3\u79fb\u52a8 \\(t\\) \u7684\u4f4d\u7f6e\uff0c\u7136\u540e\u5c31\u53ef\u4ee5\u627e\u5230\u5728\u8fd9\u4e2a Lattice \u4e2d\u53ef\u4ee5\u5f97\u5230\u7684\u6700\u5927\u7684 \\(\\mu\\)\u3002\u6211\u4eec\u4e00\u822c\u79f0\u8fd9\u4e2a\u6700\u5927\u503c\u53eb\u8986\u76d6\u534a\u5f84\uff08Covering Radius\uff09\u3002 \u76f4\u5230\u6240\u6709\u7684\u5706\u6b63\u597d\u5b8c\u7f8e\u7684\u8986\u76d6\u4e86\u6240\u6709\u7684\u7a7a\u95f4\u7684\u65f6\u5019\uff0c\u8fd9\u4e2a\u65f6\u5019\u7684\u534a\u5f84\uff0c\u5c31\u662f\u6211\u4eec\u4e4b\u524d\u5f97\u5230\u7684 \\(\\mu\\) \u4e86\u3002\u8fd9\u5c31\u662f\u8986\u76d6\u534a\u5f84\u8fd9\u4e00\u540d\u5b57\u7684\u7531\u6765\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#minkowski","title":"Minkowski\u51f8\u96c6\u5b9a\u7406","text":"\u6700\u91cd\u8981\u7684\u7528\u5904\u5c31\u662f\u7ed9\u51fa\u4e00\u4e2aLattice\u4e2d\u6700\u77ed\u5411\u91cf\u7684\u4e00\u4e2a\u4e0a\u9650\u503c\u3002\u7406\u89e3\u8fd9\u4e2a\u73a9\u610f\u53ef\u80fd\u9700\u8981\u5f15\u5165\u51f8\u5305\u7684\u6982\u5ff5\uff0c\u5c31\u7ed9\u7ed3\u8bba\u5427\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#svpshortest-vector-problem","title":"SVP\u95ee\u9898\uff08Shortest Vector Problem\uff09","text":"\u987e\u540d\u601d\u4e49\uff0c\u6700\u77ed\u5411\u91cf\u95ee\u9898\uff08SVP\uff0cShortest Vector Problem\uff09 \u5c31\u662f\u5728\u683c\u4e2d\u627e\u5230\u201c\u957f\u5ea6\u201d\u6700\u77ed\u7684\u5411\u91cf\u3002 \u4e00\u4e2a\u5f88\u76f4\u89c2\u7684\u60f3\u6cd5\uff0c\u5982\u679c\u6211\u4eec\u624b\u4e0a\u7684\u683c\u57fa\u662f\u76f8\u4e92\u6b63\u4ea4\u7684\uff0c\u90a3\u4e48\u6211\u4eec\u53ea\u9700\u8981\u904d\u5386\u683c\u57fa\u4e2d\u7684\u5404\u4e2a\u5411\u91cf\u5c31\u53ef\u4ee5\u627e\u5230\u6700\u77ed\u7684\u5411\u91cf\u4e86\u3002
\u4e8e\u662f\u6211\u4eec\u5c31\u53d1\u73b0\u4e86\u8fd9\u4e2a\u60ca\u5929\u79d8\u5bc6\uff1a\u4e3a\u4e86\u627e\u5230\u6700\u77ed\u5411\u91cf\uff0c\u5c31\u8981\u5c3d\u91cf\u4f7f\u5f97\u683c\u57fa\u6b63\u4ea4\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#cvpclosest-vector-problem","title":"CVP\u95ee\u9898\uff08Closest Vector Problem\uff09","text":"Lattice\u4e2d\u53e6\u4e00\u5927\u95ee\u9898\u5c31\u662f\u6700\u8fd1\u5411\u91cf\u95ee\u9898\uff08CVP\uff0cClosest Vector Problem\uff09\u4e86\u3002\u95ee\u9898\u7684\u5b9a\u4e49\u662f\u8fd9\u6837\u7684\uff1a\u7ed9\u5b9a\u8fde\u7eed\u7a7a\u95f4\u4e2d\u4efb\u610f\u7684\u4e00\u4e2a\u70b9\u00a0\\(t\\)\u00a0\uff0c\u627e\u5230\u8ddd\u79bb\u8fd9\u4e2a\u70b9\u6700\u8fd1\u7684\u683c\u70b9\u00a0\\(B_x\\)
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#cvp-svp","title":"CVP \u2192 SVP","text":"\u5982\u679c\u80fd\u591f\u4e00\u62db\u9c9c\u5403\u904d\u5929\uff0c\u90a3\u4f55\u4e50\u800c\u4e0d\u4e3a\u5462\uff1f\u53e6\u5916\u5c31\u662f\u56e0\u4e3a\u65e5\u76ca\u589e\u957f\u7684\u653b\u51fb\u624b\u6cd5\u548c\u4e0d\u592a\u591f\u7684\u8111\u5bb9\u91cf\u4e4b\u95f4\u7684\u77db\u76fe\u3002 \u4e3a\u4e86\u65b9\u4fbf\u6f14\u793a\uff0c\u5047\u8bbe\u6211\u4eec\u6709\u4e00\u4e2a\u4e00\u7ef4\u7684\u683c\uff0c\u7136\u540e\u6211\u4eec\u9700\u8981\u627e\u5230\u8ddd\u79bb\u70b9\u00a0\\(t\\)\u00a0\u6700\u8fd1\u7684\u683c\u70b9\u00a0\\(B_x\\)
\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u8fdb\u884c\u4e00\u4e2a\u7c7b\u4f3c\u4e8e\u201c\u5347\u7ef4\u201d\u7684\u64cd\u4f5c\uff0c\u4f7f\u5f97\u00a0\\(t\\)\u00a0\u70b9\u4e5f\u6210\u4e3a\u65b0\u683c\u7684\u4e00\u4e2a\u683c\u70b9\u3002
\u7136\u540e\u5728\u8fd9\u4e2a\u65b0\u683c\u4e2d\u6211\u4eec\u89e3\u51b3\u4e00\u4e0b\u00a0SVP\uff0c\u627e\u5230\u6700\u77ed\u5411\u91cf\uff0c\u7136\u540e\u518d\u5c06\u8fd9\u4e2a\u6700\u77ed\u5411\u91cf\u6295\u5f71\u56de\u539f\u6765\u7684\u4f4e\u7ef4\u4e2d\uff0c\u6211\u4eec\u5c31\u80fd\u627e\u5230\u539f\u6765\u683c\u4e2d\u8ddd\u79bb\u00a0\\(t\\)\u00a0\u6700\u8fd1\u7684\u683c\u70b9\u00a0\\(B_x\\)\u00a0\u4e86\u3002 \u4e8e\u662f\u538b\u529b\u6765\u5230\u89e3\u51b3\u00a0SVP\u00a0\u8fd9\u8fb9\uff0c\u800c\u6211\u4eec\u4e4b\u524d\u4e5f\u8bf4\u4e86\uff0c\u201c\u4e3a\u4e86\u627e\u5230\u6700\u77ed\u5411\u91cf\uff0c\u5c31\u8981\u5c3d\u91cf\u4f7f\u5f97\u683c\u57fa\u6b63\u4ea4\u201d\uff0c\u4e8e\u662f\u538b\u529b\u53c8\u6765\u5230\u00a0\u627e\u5230\u6b63\u4ea4\u57fa\u00a0\u8fd9\u8fb9\u3002\uff08\u65bd\u5bc6\u7279\u6b63\u4ea4\u5316\u7528\u5728\u54ea\u91cc\u6709\u70b9\u6570\u4e86\u54c8\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lll","title":"LLL \u7b97\u6cd5","text":"\u6ca1\u9519\uff0c\u7528\u6765\u5bfb\u627e\u6b63\u4ea4\u57fa\u7684\u7b97\u6cd5\uff0c\u5927\u6982\u4e5f\u8bb8\u53ef\u80fd\uff0c\u5f88\u591a\u4eba\u53ea\u8981\u4f1a\u6389\u5305\u5c31\u53ef\u4ee5\u4e86\u3002
Fear the science. \u5c3d\u7ba1\u5f88\u524d\u6cbf\uff0c\u4f46\u662f\u8fd8\u662f\u90a3\u53e5\u8bdd\uff1a\u8fd9\u4e9b\u90fd\u662f\u5165\u95e8\uff0c\u751a\u81f3\u5165\u95e8\u7684\u8fb9\u90fd\u7b97\u4e0d\u4e0a\uff0c\u656c\u754f\u79d1\u5b66\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_23","title":"\u7ebf\u6027\u89c4\u5212","text":"\u8f6f\u4ef6\u5de5\u7a0b\u6709\u4e00\u95e8\u8bfe\u53eb\u51f8\u4f18\u5316\uff0c\u4f46\u662f\u6211\u4f5c\u4e3a\u4e00\u4e2a\u7f51\u5b89\u7684\u6ca1\u5b66\u8fc7\u4e5f\u4e0d\u4f1a\u5b66\uff08\u7406\u76f4\u6c14\u58ee\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_24","title":"\u56fe\u8bba","text":"\u4e8c\u5206\u56fe\uff0c\u7f51\u7edc\u6d41\u5565\u7684\uff0c\u7531\u4e8e\u7b97\u6cd5\u7ade\u8d5b\u9000\u5f79\u591a\u5e74\uff0c\u4eba\u83dc\uff0c\u7559\u5f85\u540e\u4eba\u8865\u5145\u3002\uff08\u76f8\u4fe1\u540e\u4eba\u7684\u667a\u6167\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#reference","title":"\u53c2\u8003 | Reference","text":"\u5357\u5927\u848b\u708e\u5ca9\u8001\u5e08\u5bf9\u4e2d\u5b66\u751fJSNOI\u5206\u4eab\uff1a https://jyywiki.cn/OI/
\u95eb\u4ee4\u742a\u8001\u5e08\u7684Games101\uff1a https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
3blue1brown: https://www.3blue1brown.com/
Zach\u6570\u5b66\u7cfb\u5217: https://www.youtube.com/watch?v=i8FukKfMKCI&t=110s
Van1sh\u7684\u535a\u5ba2\uff1ahttp://jayxv.github.io/2023/10/17/\u5bc6\u7801\u5b66\u57fa\u7840\u4e4b\u683c\u4e2d\u96be\u9898\u4e0e\u683c\u57fa\u89c4\u7ea6/
Steven Yue\u7684\u6587\u7ae0\uff1a Steven Yue - \u77e5\u4e4e (zhihu.com)
2020\u5e74Simons\u683c\u5bc6\u7801\u8bb2\u5ea7\uff1aLattices: Algorithms, Complexity, and Cryptography Boot Camp (berkeley.edu)
"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\u200b\\u3000\\-\u3001\u3002\uff0c\uff0e\uff1f\uff01\uff1b]+","pipeline":["stemmer"]},"docs":[{"location":"","title":"Index","text":"(\uff61\uff65\u2200\uff65)\uff89\uff9e\u55e8\uff0c\u4f60\u53d1\u73b0\u4e86\u00a0Chive
\u672c\u7f51\u7ad9\u7075\u611f\u6765\u6e90\u4e8e\u6d59\u6c5f\u5927\u5b66\u56fe\u7075\u73ed\u5b66\u4e60\u6307\u5357\u548c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66\u751f\u5b58\u624b\u518c\u3002
Note
\u76ee\u524d\u6211\u4eec\u6b63\u5728\u81f4\u529b\u4e8e\u5411\u8ba1\u7b97\u673a\u5b66\u9662\u5176\u4f59\u4e13\u4e1a\u63d0\u4f9b\u670d\u52a1\uff0c\u6b22\u8fce\u8fdb\u884cContribute
\u6211\u4eec\u5e0c\u671b\u5efa\u7acb\u4e00\u4e2a\u4ed3\u5e93\uff0c\u5bf9\u8fd9\u4e9b\u8ba1\u7b97\u673a\u8bfe\u7a0b\u8fdb\u884c\u4e00\u4e9b\u4ecb\u7ecd\uff0c\u5e76\u8865\u5145\u4e00\u4e9b\u8bfe\u7a0b\u5185\u5bb9\u4f9b\u4e13\u4e1a\u65b0\u4eba\u53c2\u8003\u5b66\u4e60\u3002
\u6b22\u8fce\u5404\u4f4d\u540c\u5b66\u5bf9\u672c\u4ed3\u5e93\u8fdb\u884c\u8d21\u732e\uff01
P.S. \u672c\u7ad9\u57fa\u672c\u4f9d\u636e\u6d59\u5927\u4ed3\u5e93\u6784\u5efa\uff0c\u611f\u8c22\u6d59\u5927\u56fe\u7075\u73ed\u540c\u5b66\u7684\u8d21\u732e\uff0c\u76f8\u5173\u9879\u76ee\u5982\u4e0b\uff1a
\u4ff1\u4e50\u90e8\u4e3b\u9875\uff1a\u7b2c\u4e94\u7a7a\u95f4\u7f51\u7edc\u7a7a\u95f4\u5b89\u5168\u4ff1\u4e50\u90e8 \u8bf7\u5728\u6821\u56ed\u7f51\u73af\u5883\u4e0b\u8bbf\u95ee\uff01
\u8be5\u9879\u76ee\u4e3b\u9875\u5730\u5740\uff1a\u54c8V \u8ba1\u7b97\u673a\u6307\u5357
\u8be5\u9879\u76eeGitHub\u5730\u5740: \u54c8V \u8ba1\u7b97\u673a\u6307\u5357
"},{"location":"manual/","title":"\u9879\u76ee\u7ed3\u6784\u4ecb\u7ecd","text":"-|-.github/workflows #\u8fd9\u91cc\u5b58\u50a8github page\u90e8\u7f72yml\n-|-docs #\u8fd9\u4e2a\u76ee\u5f55\u7528\u4e8e\u5b58\u50a8\u6240\u6709\u6587\u6863\u5185\u5bb9\n |--index.md #HITWH-CS\u7ad9\u70b9\u4e3b\u9875\n |--others.md #\u6216\u8005\u6709\u5176\u4ed6\u9875\u9762\n |--example #\u8fd9\u662f\u4e00\u4e2a\u6837\u4f8b\u76ee\u5f55\n |--index.md #example\u7684\u4e3b\u9875\n |--others1.md #example\u7684\u5177\u4f53\u5176\u4ed6\u5185\u5bb9\n |--others2.md #example\u7684\u5177\u4f53\u5176\u4ed6\u5185\u5bb9\n-|-mkdocs.yml #\u7f51\u7ad9\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5177\u4f53\u5185\u5bb9\u770b\u4e0b\u6587\n-|-requirments.txt #Python\u7684\u9700\u6c42\u6587\u4ef6\uff0c\u5982\u65e0\u5fc5\u8981\uff0c\u52ff\u589e\u5b9e\u4f53 \n
"},{"location":"manual/#_2","title":"\u65b0\u589e\u5185\u5bb9\u8bf4\u660e","text":"\u5982\u679c\u9700\u8981\u65b0\u589e\u677f\u5757\u548c\u9875\u9762\uff0c\u8bf7\u5bf9 mkdocs.yml
\u7684 nav
\u677f\u5757\u4e0b\u8fdb\u884c\u4fee\u6539 \u4e0b\u56fe\u662f\u65b0\u589e\u4e00\u4e2a\u901a\u8bc6\u8bfe general \u7684\u6837\u4f8b \u53ef\u4ee5\u770b\u5230\u4e3b\u9875\u548c\u901a\u8bc6\u8bfe\u662f\u4e24\u4e2a\u677f\u5757\u5185\u5bb9\uff0c\u5176\u5404\u81ea\u5bf9\u5e94\u7684\u6587\u6863\u5185\u5bb9\u663e\u793a\u5728\u5de6\u4fa7\u5bfc\u822a\u680f\uff0c\u5982\u4e0b\u56fe\u6240\u793a \u53ef\u4ee5\u770b\u5230\u4e3b\u9875\u76ee\u5f55\u4e0b\u6709 index.md
\u9ed8\u8ba4\u4e3b\u9875\u548c next.md
\u7684\u6837\u4f8b nav
\u6240\u5bf9\u5e94\u7684\u5c31\u662f\u9879\u76ee\u7ed3\u6784\u4e2d docs
\u6240\u5bf9\u5e94\u7684\u76ee\u5f55\u7ed3\u6784\uff0c general
\u76ee\u5f55\u5bf9\u5e94\u65b0\u589e\u7684\u6838\u5fc3\u8bfe\u7684\u6240\u6709\u5185\u5bb9\uff0c\u4e00\u4e2a\u7248\u5757\u4e00\u4e2a\u76ee\u5f55\uff0c\u65b9\u4fbf\u7ef4\u62a4\uff0c\u4e0b\u9762\u662fgeneral
\u76ee\u5f55\u7684\u5185\u5bb9
\u672c\u7f51\u7ad9\u6b22\u8fce\u4e00\u5207\u8d21\u732e \u4e0d\u8fc7\u8bfe\u7a0b\u5185\u5bb9\u53ea\u9762\u5411HITWH\u7684\u8bfe\u7a0b\u5185\u5bb9\u8303\u56f4\uff0c\u5982\u679c\u4f60\u60f3\u8981\u4e3a\u672c\u7f51\u7ad9\u8fdb\u884c\u8d21\u732e\uff0c\u4ee5\u4e0b\u662f\u4e00\u4e9b\u6307\u5357\u3002
"},{"location":"manual/#_4","title":"\u672c\u5730\u6784\u5efa","text":"\u9879\u76ee\u62c9\u53d6\uff1a
git clone https://github.com/Fifth-Space/HITWH-CS.git\ncd HITWH-CS\n
\u5b89\u88c5 Python \u4f9d\u8d56 pip install -r requirements.txt\n
\u5b89\u88c5\u672c\u6587\u6863\u63d2\u4ef6\uff1a git clone https://github.com/Fifth-Space/mkdocs_plugins.git\ncd mkdocs_plugins\npip install -e .\ncd ..\n
\u5728\u672c\u5730\u8fd0\u884c\uff0c\u786e\u8ba4\u65e0\u8bef\u540e\u518d\u8fdb\u884c\u63a8\u9001 mkdocs serve\n
- \u4e4b\u540e\u5373\u53ef\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee\u00a0localhost:8000\u00a0\u9884\u89c8\u7f51\u7ad9"},{"location":"manual/#_5","title":"\u8d21\u732e\u5b88\u5219","text":"\u901a\u8fc7\u00a0PR\uff08\u5373\u00a0Pull Request\uff09\u7684\u5f62\u5f0f\u6765\u8fdb\u884c\u8d21\u732e\uff0c\u5177\u4f53\u6d41\u7a0b\uff1a
\u7b49\u5f85\u7ba1\u7406\u5458\u7684\u5ba1\u6838\u3001\u4fee\u6539\uff0c\u7136\u540e\u5408\u5e76\u5230\u672c\u00a0repo\u00a0\u4e2d
general: \u901a\u8bc6\u8bfe\nouter: \u5916\u4e13\u4e1a\u9009\u4fee\u8bfe\nbasic: \u6570\u7406\u57fa\u7840\u8bfe\nculture\uff1a\u6587\u5316\u7d20\u8d28\u8bfe\nmajor\uff1aCS \u4e13\u4e1a\u7c7b\u8bfe\u7a0b\nlabs\uff1a\u5b66\u6821\u5404\u4e2a\u5b9e\u9a8c\u5ba4\u7684\u6280\u672f\u6808\u4ecb\u7ecd\u548c\u9879\u76ee\uff08\u5305\u62ec\u8001\u5e08\u7684\u5b9e\u9a8c\u5ba4\uff09\ncompetition: \u8ba1\u7b97\u673a\u76f8\u5173\u7684\u5404\u4e2a\u6bd4\u8d5b\u7684\u4ecb\u7ecd\nsalon\uff1a\u4ff1\u4e50\u90e8\u53ef\u516c\u5f00\u7684\u5206\u4eab\u4f1a\u6587\u6863\nCTF-WP\uff1a\u4ff1\u4e50\u90e8\u53c2\u52a0\u7684CTF\u6bd4\u8d5b\u9898\u89e3\n
"},{"location":"template/","title":"<\u8bfe\u7a0b\u540d\u79f0>","text":"CS <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> AI <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> IS <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> SE <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee> \u7d2b\u4e01\u9999 <\u4e13\u4e1a\u57fa\u7840/\u4e13\u4e1a\u5fc5\u4fee/\u4e13\u4e1a\u9009\u4fee>"},{"location":"template/#_2","title":"\u8bfe\u7a0b\u5b66\u4e60\u5185\u5bb9","text":"<\u8bfe\u7a0b\u5b66\u4e60\u5185\u5bb9>
"},{"location":"template/#_3","title":"\u5148\u4fee\u8981\u6c42","text":"<\u5148\u4fee\u8981\u6c42(\u6ca1\u6709\u5c31\u5199\u65e0\u6216\u8005\u7565\u53bb\u8fd9\u4e00\u9879)>
"},{"location":"template/#_4","title":"\u4efb\u8bfe\u6559\u5e08","text":"<\u6559\u5e081><\u6559\u5e082><\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>
<\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>
Note
\u5982\u679c\u53ea\u6709\u4e00\u4e2a/\u7ec4\u8001\u5e08\uff0c\u6216\u8005\u8001\u5e08\u4e4b\u95f4\u5dee\u522b\u4e0d\u5927\uff0c\u53ef\u4ee5\u76f4\u63a5\u5199\u6587\u672c\u3002\u5426\u5219\u5efa\u8bae\u4ee5\u8fd9\u79cd\u5f62\u5f0f\u6765\u5199\uff1a
=== \"<\u6559\u5e081>\"\n\n <\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>\n\n=== \"<\u6559\u5e082>\" \n\n <\u6388\u8bfe\u65b9\u5f0f\uff08\u5982\u662f\u5426\u53cc\u8bed\u3001\u677f\u4e66/PPT/\u5176\u4ed6\uff09\u3001\u6388\u8bfe\u6c34\u5e73\u3001\u7ed9\u5206\u60c5\u51b5\u7b49>\n
\u6ce8\u610f\u6559\u5e08\u5de6\u53f3\u7684\u5f15\u53f7\uff0c\u4ee5\u53ca\u6bb5\u843d\u5185\u5bb9\u8981\u5168\u90e8\u7f29\u8fdb 4 \u7a7a\u683c\u3002"},{"location":"template/#_5","title":"\u8bfe\u7a0b\u6559\u6750","text":"<\u6559\u6750\u540d>
(\u53ef\u9009)<\u5bf9\u6559\u6750\u7684\u8bc4\u4ef7\uff08\u5982\u662f\u5426\u7528\u6765\u5e03\u7f6e\u4f5c\u4e1a\uff0c\u4e0a\u8bfe\u6240\u8bb2\u4e0e\u6559\u6750\u7ed3\u5408\u662f\u5426\u7d27\u5bc6\uff0c\u662f\u5426\u53ef\u4ee5\u901a\u8fc7\u6559\u6750\u81ea\u4e3b\u5b66\u4e60\u7b49\uff09>
"},{"location":"template/#_6","title":"\u5206\u6570\u6784\u6210","text":"<\u6559\u5e081><\u6559\u5e082><\u5206\u6570\u6784\u6210\uff0c\u53ef\u5177\u4f53\u4ecb\u7ecd\u5404\u90e8\u5206\uff0c\u5982\u4f5c\u4e1a\u60c5\u51b5\u3001\u5b9e\u9a8c\u5185\u5bb9\u53ca\u5f62\u5f0f\u3001\u8003\u8bd5\u8303\u56f4\u53ca\u5f62\u5f0f\u7b49>
<\u5206\u6570\u6784\u6210\uff0c\u53ef\u5177\u4f53\u4ecb\u7ecd\u5404\u90e8\u5206\uff0c\u5982\u4f5c\u4e1a\u60c5\u51b5\u3001\u5b9e\u9a8c\u5185\u5bb9\u53ca\u5f62\u5f0f\u3001\u8003\u8bd5\u8303\u56f4\u53ca\u5f62\u5f0f\u7b49>
Note
\u540c\u4e0a\uff0c\u5982\u679c\u5404\u6559\u5b66\u73ed\u5206\u6570\u6784\u6210\u4e00\u81f4\u5219\u53ef\u4ee5\u76f4\u63a5\u5199\u6587\u672c\uff0c\u5426\u5219\u5efa\u8bae\u540c\u4e0a\u5f62\u5f0f\u3002
"},{"location":"template/#_7","title":"<\u5176\u4ed6\u53ef\u9009\u9879\u76ee>","text":"\u5305\u62ec \u63a8\u8350\u4e66\u5355\u3001\u53c2\u8003\u7b14\u8bb0\u3001\u5176\u4ed6\u8d44\u6e90\u3001\u8bfe\u7a0b\u5b66\u4e60\u5efa\u8bae\u3001\u4e2a\u4eba\u8bc4\u8bba\u3001\u540e\u7eed\u8bfe\u7a0b \u7b49\uff0c\u6bcf\u4e00\u4e2a\u5360\u4e00\u4e2a\u4e8c\u7ea7\u6807\u9898\uff08##
\uff09
\u53ef\u4ee5\u5c06\u5176\u4ed6\u6587\u4ef6\u7c7b\u578b\u7684\u8d44\u6599\uff08\u5c3d\u91cf\u4e0d\u8981\u592a\u5927\uff09\u4e0a\u4f20\u5230\u540c\u4e00\u76ee\u5f55\u4e2d\uff0c\u7136\u540e\u5728\u9875\u9762\u91cc\u6dfb\u52a0\u6307\u5411\u8d44\u6599\u7684\u94fe\u63a5\uff08[\u6587\u5b57](\u76f8\u5bf9\u8def\u5f84)
\uff09
Note
\u53ef\u4ee5\u53c2\u8003\u5176\u4ed6\u5df2\u7ecf\u57fa\u672c\u5b8c\u6210\u7684\u9875\u9762\u7684 markdown \u6e90\u7801
"},{"location":"CTF-WP/","title":"\u4ecb\u7ecd","text":"WP
"},{"location":"competition/","title":"\u4ecb\u7ecd","text":"\u8ba1\u7b97\u673a\u76f8\u5173\u7684\u6bd4\u8d5b\u4ecb\u7ecd\uff0c\u56e0\u4e3a\u8ba1\u7b97\u673a\u62e5\u6709\u5f88\u591a\u7684\u7ade\u8d5b\uff0c\u4e0d\u4ec5\u4ec5\u662f\u4fdd\u7814\u76f8\u5173\u548c\u699c\u5355\u8d5b\u4e8b\uff0c\u4e5f\u6709\u5f88\u591a\u6709\u542b\u91d1\u91cf\u7684\u6bd4\u8d5b\u3002
\u5e0c\u671b\u8fd9\u4e2a\u4ecb\u7ecd\u80fd\u591f\u5e2e\u52a9\u5230\u5927\u5bb6\u3002
"},{"location":"labs/","title":"\u4ecb\u7ecd","text":"\u6821\u5185\u5404\u4e2a\u5b9e\u9a8c\u5ba4\u548c\u8001\u5e08\u5b9e\u9a8c\u5ba4\u7684\u6280\u672f\u6808\u4ee5\u53ca\u9879\u76ee\u4ecb\u7ecd
"},{"location":"outer/","title":"\u4ecb\u7ecd","text":"\u5728 2022 \u7ea7\u4e4b\u540e \u6bd5\u4e1a\u8981\u6c42\u670910\u4e2a\u5b66\u5206\u7684\u5916\u4e13\u4e1a\u9009\u4fee\u8bfe
"},{"location":"salon/","title":"\u4ecb\u7ecd","text":"\u4ff1\u4e50\u90e8\u5185\u90e8\u4ea4\u6d41\u4f1a\u6587\u6863\u5206\u4eab
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/","title":"20240204","text":"\u5185\u5bb9\uff1a\u7ebf\u6027\u4ee3\u6570\u7684\u5e94\u7528\uff0c\u5305\u542b\uff08\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\uff0c\u7b97\u6cd5\uff0c\u5bc6\u7801\u5b66\u7684\u76f8\u5173\u5185\u5bb9\uff09
\u524d\u7f6e\u57fa\u7840\uff1a\u77e9\u9635\u4e58\u6cd5
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#arithmetic-algebra-algorithm","title":"\u7b97\u672f\uff0c\u4ee3\u6570\uff0c\u7b97\u6cd5 | arithmetic, algebra, algorithm","text":"\u5148\u7b80\u5355\u7684\u5f15\u5165\u4e00\u4e0b\uff0c\u4ece\u5c0f\u5b66\u7684 \u7b97\u672f \u5230\u4e2d\u5b66\u7684 \u4ee3\u6570 \u8fd9\u4e24\u8005\u4e4b\u95f4\u7684\u5dee\u522b\u3002
\u7b97\u672f\u8fd0\u7b97\u7684\u7ed3\u679c\u662f\u786e\u5b9a\u7684\u2014\u2014\u4f1a\u53d8\u8d8a\u6765\u8d8a\u7b80\u5355\u3002
\u4ee3\u6570\u8fd0\u7b97\u662f\u6ca1\u6709\u529e\u6cd5\u53bb\u5b9a\u4e49\u201c\u597d\u201d\u8fd0\u7b97\u7684\u3002
\u7b97\u6cd5\u662f\u4e00\u79cd\u81ea\u52a8\u5de5\u4f5c\u7684\u6d41\u7a0b\uff0c\u6309\u7167\u5c0f\u6b65\u5de5\u4f5c\u8fdb\u884c\u81ea\u52a8\u8fd0\u7b97\u3002 \u6bd4\u5982\u4e0b\u9762\u8fd9\u9053\u9898\u76ee\u3002 \u9898\u76ee\uff1a Problem - B - Codeforces
\u8fd9\u662f Codeforces \u5468\u8d5b div2
\u7684\u4e00\u9053\u9898\u76ee\uff0c\u6bd4\u8f83\u7b80\u5355\uff0c\u5927\u5bb6\u53ef\u4ee5\u7b80\u5355\u7684\u601d\u8003\u4e00\u4e0b
\u82f1\u6587\u770b\u7740\u5f88\u957f\uff0c\u5b9e\u9645\u9898\u76ee\u5f88\u7b80\u5355\uff0c\u6709 n
\u4e2a\u5f00\u5173\u548c m
\u76cf\u706f\uff0c\u53ea\u8981\u5b58\u5728\u4e00\u4e2a\u63a7\u5236\u8fd9\u4e2a\u706f\u662f\u5f00\u7740\u7684\u8fd9\u4e2a\u7b49\u5c31\u4f1a\u88ab\u70b9\u4eae\u3002 \u7136\u540e\u7ed9\u4f60 01
\u77e9\u9635\uff0c\u8868\u793a n
\u4e2a\u5f00\u5173\u63a7\u5236 m
\u76cf\u706f\uff0c\u884c\u5217\u4e3a 1
\u8868\u793a\u53ef\u4ee5\u8ba9\u706f\u4eae\u7740\uff0c\u95ee\u4f60\u80fd\u5426\u5220\u6389\u4e00\u4e2a\u5f00\u5173\uff0c\u4f7f\u5f97\u6240\u6709\u706f\u88ab\u70b9\u4eae\u3002
\u601d\u8def\u60f3\u5230\u7684\u5f88\u7b80\u5355\uff0c\u5bf9\u4e8e\u6bcf\u4e00\u884c\u6c42\u548c\uff0c\u5982\u679c\u5bf9\u4e8e\u6bcf\u4e00\u884c\uff0c\u5982\u679c\u53bb\u6389\u67d0\u4e00\u884c\u540e\u8fd9\u4e00\u5217\u7684\u548c\u53d8\u6210 0
\uff0c\u8bf4\u660e\u6709\u706f\u4e0d\u80fd\u5220\u6389\uff0c\u4e00\u4e2a\u7b80\u5355\u7684\u679a\u4e3e\u6cd5\uff0c\u6bcf\u4e00\u6b21\u68c0\u6d4b\u5f00\u5173\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f \\(O(mn)\\)\uff0c\u6240\u4ee5\u603b\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f\\(O(mn^2)\\)\uff0c\u521a\u597d\u591f \\(3s\\) \u7684\u65f6\u95f4\u9650\u5236\u3002\u5f53\u7136\uff0c\u53ef\u4ee5\u7528\u524d\u7f00\u548c\u6216\u8005\u4f4d\u8fd0\u7b97\u7684\u5947\u6280\u6deb\u5de7\u8fdb\u884c\u590d\u6742\u5ea6\u964d\u4f4e\uff0c\u8fd9\u91cc\u4e0d\u8fdb\u884c\u5c55\u5f00\u3002
\u90a3\u4e48\u8fd9\u4e2a\u601d\u8def\u4ece\u7ebf\u6027\u4ee3\u6570\u7684\u89d2\u5ea6\u600e\u4e48\u770b\u5462\u2026\u2026 \u5c31\u662f\u6c42\u7ebf\u6027\u65e0\u5173\u7ec4\uff0c\u5982\u679c\u5728\u7ebf\u6027\u65e0\u5173\u7ec4\u91cc\u9762\u5c31\u662f NO
\uff0c\u5982\u679c\u4e0d\u5728\u7ebf\u6027\u65e0\u5173\u7ec4\u91cc\u9762\u5c31\u662f YES
\uff0c\u5f53\u7136\u7ebf\u6027\u65e0\u5173\u7ec4\u5728\u8fd9\u91cc\u662f\u552f\u4e00\u7684\u3002
\u7ebf\u6027\u65e0\u5173\u7ec4\u4ee3\u8868\u6ca1\u6709\u5197\u4f59\u7684\u4fe1\u606f\uff0c\u8fd9\u4e9b\u4fe1\u606f\u90fd\u662f\u7ebf\u6027\u65e0\u5173\u7684\uff0c\u4e5f\u5c31\u662f\u5411\u91cf\u4e4b\u95f4\u65e0\u6cd5\u7528\u5f7c\u6b64\u4e4b\u95f4\u76f8\u4e92\u8868\u8fbe\u7684\u542b\u4e49\uff0c\u56e0\u6b64\uff0c\u5728\u9898\u76ee\u91cc\uff0c\u5c31\u662f\u68c0\u6d4b\u6709\u6ca1\u6709\u5f00\u5173\u662f\u5197\u4f59\u7684\u3002
\u6e90\u7801\u5b9e\u73b0\u53ef\u4ee5\u53c2\u8003 Python numpy
\u91cc\u9762\u7684 matrix_rank
\u51fd\u6570\u5b9e\u73b0\u3002\u5728 \\(linalg/\\_linalg.py\\) \u76ee\u5f55\u4e0b\u7684 \\(1973\\) \u884c
\u8fd9\u662f\u7ebf\u6027\u4ee3\u6570\u7684\u601d\u60f3\u5728\u7b97\u6cd5\u7ade\u8d5b\u91cc\u7684\u4e00\u4e2a\u7b80\u5355\u5e94\u7528\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#linear-arithmetic","title":"\u7ebf\u6027\u7b97\u672f | Linear Arithmetic","text":"\u7565\u8fc7\u57fa\u7840\u6027\u7684\u5411\u91cf\u52a0\u51cf\u8fd0\u7b97\uff0c\u6211\u4eec\u5148\u91cd\u65b0\u590d\u4e60\u4e00\u4e0b\u6570\u4e58\u3002 $$ 2 \\times\\begin{bmatrix}1\\\\2\\end{bmatrix} = \\begin{bmatrix}2\\\\4\\end{bmatrix} $$ \u4ec0\u4e48\u610f\u601d\uff0c\u8fd9\u662f\u4e00\u4e2a\u51e0\u4f55\u4e0a\u7684\u4f38\u7f29\u8fd0\u7b97\uff0c\u628a\u539f\u6765\u7684\u5411\u91cf\u62c9\u4f38\u4e86 \\(2\\) \u500d\uff0c\u7531\u6b64\u5f15\u5230\u6211\u4eec\u7ebf\u6027\u53d8\u6362\u7684\u5185\u5bb9\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#linear-transformation","title":"\u7ebf\u6027\u53d8\u6362 | Linear Transformation","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_3","title":"\u7ebf\u6027\u4ee3\u6570\u7684\u4e00\u4e9b\u5e94\u7528","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#computer-graphics","title":"\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66 | Computer Graphics","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_4","title":"\u70b9\u4e58\u7684\u4f5c\u7528","text":"\u7531\u4e8e\u4e0d\u60f3\u753b\u56fe\u4e86\uff0c\u6240\u4ee5\u865a\u7a7a\u5730\u8bb2\u4e00\u4e0b\u3002 \u70b9\u4e58\u5728\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u9886\u57df\u4e3b\u8981\u7528\u4e8e\u6c42\u89e3\u4e24\u4e2a\u5411\u91cf\u4e4b\u95f4\u7684\u89d2\u5ea6\u3002\u53ef\u4ee5\u60f3\u4e00\u60f3\u8fd9\u4e2a\u89d2\u5ea6\u6709\u4ec0\u4e48\u7528\u3002
\u5411\u91cf\u662f\u4e00\u4e2a\u5373\u6709\u5927\u5c0f\u53c8\u6709\u65b9\u5411\u7684\u91cf\uff0c\u4f46\u662f\u8ba1\u7b97\u673a\u5185\u90e8\u662f\u6ca1\u6709\u65b9\u5411\u7684\u8fd9\u4e2a\u6982\u5ff5\u7684\uff0c\u6240\u4ee5\u7528\u4e00\u4e2a\u53ef\u4ee5\u91cf\u5316\u7684\u89d2\u5ea6\u53bb\u8868\u793a\u5411\u91cf\u4e4b\u95f4\u7684\u65b9\u5411\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_5","title":"\u53c9\u4e58\u7684\u4f5c\u7528","text":"\u8fd9\u91cc\u4e0d\u590d\u4e60\u76f8\u5173\u7684\u5b9a\u4e49\u95ee\u9898\uff0c\u4f46\u662f\u6709\u4e00\u4e9b\u57fa\u672c\u7684\u5e38\u8bc6\u6027\u6982\u5ff5\u3002 $$ \\vec x \\times \\vec y = \\vec z \\quad \\vec y \\times \\vec x = -\\vec z $$ \u8fd9\u6709\u4ec0\u4e48\u4f5c\u7528\u5462\uff0c\u6bd4\u5982\u5728\u6e32\u67d3\u7684\u65f6\u5019\u6211\u53ef\u4ee5\u753b\u4e00\u4e2a\u4e09\u89d2\u5f62\uff0c\u7136\u540e\u7528\u5411\u91cf\u7684\u53c9\u4e58\u5feb\u901f\u5224\u65ad\u8fd9\u4e2a\u70b9\u662f\u4e0d\u662f\u5728\u4e09\u89d2\u5f62\u5185\u90e8\u3002\uff08\u53ef\u4ee5\u6269\u5c55\u5230\u4efb\u610f\u51f8\u5305\uff0c\u6c42\u51f8\u5305\u7684\u76f8\u5173\u7b97\u6cd5\u53ef\u4ee5\u7528\u70b9\u4e58\uff0c\u8be6\u60c5\u53c2\u8be2https://oi-wiki.org/geometry/convex-hull/\uff09
\u8fd9\u91cc\u6211\u4eec\u8ba1\u7b97\u53c9\u4e58\u901a\u5e38\u4f7f\u7528\u53f3\u624b\u7cfb\uff0c\u4f46\u662f\u5728 UE4 \u548c OpenGL \u4e2d\u4f7f\u7528\u7684\u662f\u5de6\u624b\u7cfb\uff0c\u95ee\u9898\u4e0d\u5927\uff0c\u7ffb\u8f6c\u4e00\u4e0b\u5c31\u53ef\u4ee5\u4e86\u3002 \u5411\u91cf\u7684\u53c9\u4e58\u548c\u5411\u91cf\u7684\u70b9\u4e58\u90fd\u53ef\u4ee5\u5199\u6210\u77e9\u9635\u4e58\u6cd5\u7684\u5f62\u5f0f\uff0c\u53ef\u4ee5\u601d\u8003\u4e00\u4e0b\u600e\u4e48\u4e2a\u4e00\u56de\u4e8b\u3002\uff08\u63d0\u793a\uff1a\u4f34\u968f\u77e9\u9635\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_6","title":"\u771f\u6b63\u7684\u53d8\u6362\u4e13\u573a","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_7","title":"\u7f29\u653e\u53d8\u6362","text":"\u6a2a\u8f74\u548c\u7eb5\u8f74\u90fd\u53d8\u6210\u4e86\u539f\u6765\u7684 \\(\\frac{1}{2}\\) \u7528\u6570\u5b66\u7684\u8bed\u8a00\u8868\u8fbe\u5462\u5982\u4e0b $$ x^{'} = sx \\quad y^{'} = sy $$ \u4f5c\u4e3a\u4e00\u4e2a\u5b66\u8fc7\u7ebf\u6027\u4ee3\u6570\u7684\u4eba\u5462\uff0c\u9700\u8981\u5b66\u4f1a\u628a\u8fd9\u4e2a\u8f6c\u6362\u6210\u4e3a\u77e9\u9635\u5f62\u5f0f\uff0c\u5c31\u6bd4\u5982\u8fd9\u4e2a\u6837\u5b50 $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix}=\\begin{bmatrix}s & 0\\\\0&s\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u4e0d\u5747\u5300\u7684\u7f29\u653e\uff0c\u6bd4\u5982 \\(x\\) \u548c \\(y\\) \u4e00\u4e2a\u7f29\u5c0f\u5230 \\(\\frac{1}{2}\\)\uff0c\u4e00\u4e2a\u4fdd\u6301\u4e0d\u53d8\u3002 $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix}=\\begin{bmatrix}s_x & 0\\\\0&s_y\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_8","title":"\u5bf9\u79f0\u53d8\u6362","text":"\u5b66\u8fc7\u8fd1\u4e16\u4ee3\u6570\u7684\u540c\u5b66\u5e94\u8be5\u90fd\u77e5\u9053\uff0c\u77e9\u9635\u8fd0\u7b97\u65f6\u975e\u5e38\u7b26\u5408\u7fa4\u8fd9\u4e2a\u4e1c\u897f\u7684\u5b9a\u4e49\u7684\uff0c\u4f46\u662f\u5982\u679c\u4ece\u9ad8\u4e2d\u6570\u5b66\u63a8\u5bfc\u8fc7\u6765\u5462\uff0c\u7fa4\u4e00\u5f00\u59cb\u8bde\u751f\u5c31\u662f\u4e3a\u4e86\u63cf\u8ff0\u5bf9\u79f0\u6027\u8fd9\u4e2a\u4e1c\u897f\u7684\u3002\u6240\u4ee5\u77e9\u9635\u5e94\u8be5\u662f\u5f88\u8f7b\u677e\u7684\u5c31\u80fd\u628a\u5bf9\u79f0\u8fd9\u4e2a\u4e1c\u897f\u7ed9\u63cf\u8ff0\u51fa\u6765\u7684\u3002
\u63d0\u793a\uff1a\u53ef\u4ee5\u770b\u6210\u662f\u7f29\u653e\u7684\u7279\u6b8a\u60c5\u51b5\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#sheer","title":"\u5207\u53d8\u6362 | Sheer","text":"$$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix}=\\begin{bmatrix}1 & a\\\\0&1\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_9","title":"\u65cb\u8f6c\u53d8\u6362","text":"$$ R_\\theta = \\begin{bmatrix}\\cos \\theta & -\\sin\\theta\\\\sin\\theta&\\cos\\theta\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_10","title":"\u8fdb\u884c\u4e00\u4e9b\u5c0f\u603b\u7ed3","text":"\u53ef\u4ee5\u53d1\u73b0\u4e0a\u8ff0\u6240\u6709\u53d8\u6362\u90fd\u53ef\u4ee5\u5199\u6210\u5f62\u5982 \\(\\(x^{'}=ax+by\\quad y^{'}=cx+dy\\)\\) \u8f6c\u6362\u6210\u4e3a\u77e9\u9635\u5f62\u5f0f\u4e5f\u5c31\u662f $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix} = \\begin{bmatrix}a & b\\\\c&d\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_11","title":"\u5e73\u79fb","text":"\u53ef\u4ee5\u60f3\u4e00\u60f3\u8fd8\u80fd\u4e0d\u80fd\u6109\u5feb\u7684\u5199\u6210\u4e00\u4e2a\u77e9\u9635\u5de6\u4e58\u7684\u5f62\u5f0f\u4e86\uff1f\u6211\u7b80\u6d01\u7684\u77e9\u9635\u5f62\u5f0f\u600e\u4e48\u6ca1\u6709\u4e86\uff1f \u53ea\u80fd\u5199\u6210\u5982\u4e0b\u5f62\u5f0f\uff1a $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\end{bmatrix} = \\begin{bmatrix}a & b\\\\c&d\\end{bmatrix}\\begin{bmatrix}x\\ y\\end{bmatrix}+\\begin{bmatrix}t_x\\\\t_y\\end{bmatrix} $$ \u597d\u50cf\u5f88\u7b80\u5355\uff0c\u4f46\u662f\u8fd9\u5f62\u5f0f\u548c\u4e4b\u524d\u7684\u4e0d\u7edf\u4e00\u3002\u4e5f\u8868\u660e\u5e73\u79fb\u4e0d\u662f\u4e00\u4e2a\u5f88\u6b63\u7ecf\u7684\u7ebf\u6027\u53d8\u6362\u3002\u8fd9\u79cd\u4e0d\u7edf\u4e00\u7684\u5f62\u5f0f\u4e5f\u4e0d\u9002\u5408\u7a0b\u5e8f\u5458\u5077\u61d2\uff0c\u51ed\u5565\u540c\u6837\u662f\u4e8c\u7ef4\u53d8\u6362\uff0c\u5e73\u79fb\u5c31\u8981\u641e\u7279\u6b8a\uff1f
\u7b54\u6848\u662f\u6709\u7edf\u4e00\u5f62\u5f0f\u7684\uff0c\u4f46\u662f\u4ee3\u4ef7\u662f\u4ec0\u4e48\u5462\uff1f\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u65f6\u95f4\u590d\u6742\u5ea6\u548c\u7a7a\u95f4\u590d\u6742\u5ea6\u66f4\u591a\u60c5\u51b5\u4e0b\u662f\u4e0d\u80fd\u540c\u65f6\u517c\u5f97\u7684\u3002
\u8fd9\u6b21\u7b54\u6848\u5f88\u7b80\u5355\uff0c\u5c31\u662f\u628a\u539f\u5148\u7684 \\(2\\times2\\) \u7684\u77e9\u9635\u5347\u7ef4\uff0c\u53d8\u6210 \\(3\\times3\\) \u7684\u77e9\u9635\uff0c\u7528\u66f4\u591a\u7684\u8ba1\u7b97\u65f6\u95f4\u548c\u5b58\u50a8\u7a7a\u95f4\u6362\u53d6\u4e00\u4e2a\u66f4\u52a0\u7edf\u4e00\u7684\u8ba1\u7b97\u5f62\u5f0f\u3002
\u9996\u5148\u5148\u8bb2\u4e00\u4e0b\u77e9\u9635\u5347\u7ef4\u4e4b\u540e\uff0c\u6211\u4eec\u5bf9\u539f\u6765\u4e8c\u7ef4\u7684\u70b9\u548c\u5411\u91cf\u505a\u4e86\u4e9b\u4ec0\u4e48\u3002 \u70b9 \\(dot = (x,\\ y,\\ 1)^{T}\\) \u5411\u91cf \\(vec = (x,\\ y,\\ 0)^{T}\\) 1\u548c0\u5728\u8fd9\u91cc\u8d77\u5230\u4e86\u4e00\u4e2a\u8868\u793a\u8eab\u4efd\u7684\u4f5c\u7528\uff0c\u540c\u65f6\uff0c\u5411\u91cf\u5177\u6709\u5411\u91cf\u4e0d\u53d8\u6027\uff0c\u56e0\u6b64\u672b\u5c3e\u4e3a 0 - \u5411\u91cf + \u5411\u91cf = \u5411\u91cf - \u5411\u91cf - \u5411\u91cf = \u5411\u91cf - \u70b9 - \u70b9 = \u5411\u91cf - \u70b9 + \u5411\u91cf = \u70b9 - \u70b9 + \u70b9 = \uff1f\uff08\u6839\u636e\u67d0\u79cd\u6269\u5145\u5b9a\u4e49\uff0c\u8868\u793a\u4e24\u4e2a\u70b9\u7684\u4e2d\u70b9\uff09
\u6269\u5145\u5b9a\u4e49\u5982\u4e0b\uff1a\\((x,\\ y,\\ w)^T\\) \u662f\u8868\u793a\u4e8c\u7ef4\u7684\u70b9\\((x/w,\\ y/w,\\ 1)^T\\)
\u56e0\u6b64\u7edf\u4e00\u5f62\u5f0f\u5982\u4e0b $$ \\begin{bmatrix}x^{'}\\\\y^{'}\\\\1\\end{bmatrix} = \\begin{bmatrix}a & b & t_x\\\\c&d&t_y\\\\0&0&1\\end{bmatrix}\\begin{bmatrix}x\\ y\\\\1\\end{bmatrix} $$ \u5e0c\u671b\u5199\u5230\u8fd9\u91cc\u80fd\u66f4\u597d\u7684\u5e2e\u4f60\u7406\u89e3\u5f88\u591a\u6559\u79d1\u4e66\u4e0a\u7a81\u7136\u5192\u51fa\u7684 \u56db\u5143\u6570 \u8fd9\u4e2a\u5947\u5999\u7684\u6982\u5ff5\uff0c\u56e0\u4e3a\u90a3\u662f\u5728\u4e09\u7ef4\u7a7a\u95f4\u4e2d\uff0c\u989d\u5916\u5347\u4e86\u4e00\u7ef4\u3002\uff0801\u4f5c\u4e1a\u5149\u6805\u5316\u5c55\u793a\uff09
\u4f46\u662f\u8fd9\u8fdc\u8fdc\u4e0d\u662f\u56fe\u5f62\u5b66\uff0c\u4ed6\u53ea\u662f\u5165\u95e8\uff0c\u751a\u81f3\u95e8\u90fd\u6ca1\u6709\u5165\u3002\u66f4\u6df1\u4e00\u70b9\u7684\u6bd4\u5982\u6444\u50cf\u5934\u7684\u65cb\u8f6c\uff0c\u89c6\u56fe\u7684\u53d8\u6362\u90fd\u6ca1\u6709\u8bb2\u5230\uff0c\u8fd9\u4e9b\u4f9d\u65e7\u5c5e\u4e8e\u77e9\u9635\u53d8\u6362\u7684\u8303\u7574\uff0c6\u4e2a\u81ea\u7531\u5ea6\u5bfc\u81f4\u77e9\u9635\u8d8a\u6765\u8d8a\u96be\u5199\uff0c\u6240\u4ee5\u5bf9\u7ebf\u6027\u4ee3\u6570\u7684\u529f\u5e95\u63d0\u51fa\u4e86\u5f88\u9ad8\u7684\u8981\u6c42\u3002
\u5149\u6805\u5316\uff0c\u5149\u7ebf\u8ffd\u8e2a\uff0c\u8f90\u5c04\u5ea6\u91cf\u5b66\uff0c\u57fa\u4e8e\u7269\u7406\u7684\u6e32\u67d3\uff0c\u4ee5\u53ca\u5230\u6700\u540e\u8fdb\u884c\u6e38\u620f\u5f15\u64ce\u7684\u5f00\u53d1\uff0c\u9700\u8981\u6570\u636e\u7ed3\u6784\uff0c\u9700\u8981\u7b97\u6cd5\uff0c\u9700\u8981\u4e3a\u4e86\u66f4\u903c\u771f\u7684\u56fe\u7247\u53bb\u69a8\u5e72GPU\u7684\u6027\u80fd\u3002\u8fd9\u90fd\u662f\u56fe\u5f62\u5b66\u3002
\u4e2d\u56fd\u79d1\u6280\u5927\u5b66\u6709\u4e00\u5957\u5c5e\u4e8e\u81ea\u5df1\u7684\u56fe\u5f62\u5b66Lab\uff0c\u897f\u5b89\u4ea4\u901a\u5927\u5b66\u57282024\u5e74\u4e5f\u5728\u9010\u6b65\u5f00\u53d1\u81ea\u5df1\u7684\u56fe\u5f62\u5b66\u4f5c\u4e1a\u4ee3\u7801\u6846\u67b6\uff0c\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66\u548c\u6d59\u6c5f\u5927\u5b66\u4f1a\u5728\u672c\u79d1\u9636\u6bb5\u8bb2\u4e00\u70b9\u8499\u7279\u5361\u6d1b\u6e32\u67d3\u7684\u5185\u5bb9\uff0c\u6b63\u89c6\u81ea\u5df1\u4e0e\u5176\u4ed6\u5b66\u6821\u672c\u79d1\u751f\u4e4b\u95f4\u7684\u5dee\u8ddd\uff0c\u52aa\u529b\u8fdb\u6b65\u3002
\u56fe\u5f62\u5b66\u662f\u6982\u7387\u8bba\uff0c\u5fae\u79ef\u5206\uff0c\u7ebf\u6027\u4ee3\u6570\uff0c\u7269\u7406\u5b66\u90fd\u9700\u8981\u7684\u4e00\u95e8\u5b66\u79d1\uff0c\u53cd\u6b63\u611f\u89c9\u633a\u597d\u73a9\u7684\uff0c\u6bd4\u5982\u8499\u7279\u5361\u6d1b\u79ef\u5206\u3002
talk is cheap, show me the code
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_12","title":"\u7b97\u6cd5","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_13","title":"\u77e9\u9635\u5feb\u901f\u5e42","text":""},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_14","title":"\u5feb\u901f\u5e42","text":"\u6c42 \\(a^b\\ mod\\ c\\) \u7684\u95ee\u9898\u3002 \u5f88\u591a\u4eba\u4f1a\u89c9\u5f97\u8fd9\u5f88\u7b80\u5355\uff0c\u4f46\u662f\u5982\u679c \\(b\\) \u5f88\u5927\u5462\uff1f $$ a^{2b} = (a^2)^b \\quad a^{2b+1} = a\\times (a^2)^b $$ \u5982\u6b64\u4e0d\u65ad\u7684\u4e8c\u5206\u4e0b\u53bb\u5c31\u53ef\u4ee5\u5f97\u5230\u7b54\u6848\uff0c\u7528\u5230\u7684\u4e5f\u662f\u4e8c\u5206\u7684\u601d\u60f3\u3002 \u4e3e\u4e2a\u4f8b\u5b50\u5427\uff0c\u6bd5\u7adf\u4e0a\u9762\u7684\u7b97\u5f0f\u8fd8\u662f\u592a\u62bd\u8c61\u4e86 $$ a^{13} = a^{(1101)_2} = a^8 \u00b7 a^4\u00b7a^1 $$ \u8fd9\u6837\u6211\u4eec\u53ea\u9700\u8981\u77e5\u9053 \\(a^1,a^2,...a^{2^n}\\) \u5c31\u53ef\u4ee5\u5feb\u901f\u7684\u7b97\u51fa \\(a^{2^{n+1}}\\) \u7684\u5e42\u6b21\u3002\u53ea\u9700\u8981\u5c06\u5bf9\u5e94\u4e8c\u8fdb\u5236\u4f4d\u4e3a 1 \u7684\u6574\u7cfb\u6570\u5e42\u4e58\u8d77\u6765\u5c31\u884c\u4e86\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a
long long quick_pow(long long a, long long b)\n{ \n long long res = 1; \n while (b > 0) { \n if (b & 1) res = res * a; \n a = a * a; \n b >>= 1; \n } \n return res; \n}\n
\u53ef\u4ee5\u81ea\u5df1\u6839\u636e\u8fd9\u4e2a\u539f\u7406\u53bb\u641e\u641e\u5feb\u901f\u4e58\u6cd5\u3002"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_15","title":"\u77e9\u9635\u4e58\u6cd5","text":"\u61d2\u5f97\u8bb2\uff0c\u7ebf\u4ee3\u5e94\u8be5\u8fd8\u6ca1\u5fd8\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_16","title":"\u771f\u6b63\u7684\u77e9\u9635\u5feb\u901f\u5e42","text":"\u77e9\u9635\u5feb\u901f\u5e42\uff0c\u987e\u540d\u601d\u4e49\uff0c\u5c31\u662f \u77e9\u9635\u4e58\u6cd5 + \u5feb\u901f\u5e42\u3002\u597d\u7684\u6211\u8bb2\u5b8c\u4e86\uff08\u4e0d\u662f\uff09 \u4f46\u662f\u5f88\u591a\u4eba\u63a5\u89e6\u77e9\u9635\u5feb\u901f\u5e42\u5e94\u8be5\u662f\u5728\u8ba1\u7b97\u6590\u6ce2\u90a3\u5951\u6570\u5217\u90a3\u8fb9\u63a5\u89e6\u5230\u7684\uff0c\u7136\u800c\u5e76\u6ca1\u6709\u8fdb\u884c\u4e00\u4e2a\u6df1\u5165\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_17","title":"\u6590\u6ce2\u90a3\u5951\u6570\u5217","text":"\u4f46\u662f\u8fd8\u662f\u5148\u6e29\u4e60\u4e00\u4e0b\u6590\u6ce2\u90a3\u5951\u6570\u5217\u600e\u4e48\u7528\u77e9\u9635\u52a0\u901f\u6c42\u7684\uff0c\u521a\u624d\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7684\u4e1c\u897f\u5e0c\u671b\u8fd8\u6ca1\u6709\u5fd8\u5e72\u51c0 $$ \\begin{bmatrix}F_{n-1} & F_{n-2}\\end{bmatrix}\\begin{bmatrix}1&1\\\\1&0\\end{bmatrix} = \\begin{bmatrix}F_{n} & F_{n-1}\\end{bmatrix} $$
\u5b9a\u4e49\u521d\u59cb\u77e9\u9635 \\(\\text{ans} = \\begin{bmatrix}F_2 & F_1\\end{bmatrix} = \\begin{bmatrix}1 & 1\\end{bmatrix}, \\text{base} = \\begin{bmatrix} 1 & 1 \\\\ 1 & 0 \\end{bmatrix}\u3002\\)
\u90a3\u4e48\uff0c\\(F_n \u5c31\u7b49\u4e8e \\text{ans} \\text{base}^{n-2}\\) \u8fd9\u4e2a\u77e9\u9635\u7684\u7b2c\u4e00\u884c\u7b2c\u4e00\u5217\u5143\u7d20\uff0c\u4e5f\u5c31\u662f \\(\\begin{bmatrix}1 & 1\\end{bmatrix} \\begin{bmatrix} 1 & 1 \\\\ 1 & 0 \\end{bmatrix}^{n-2}\\)\u7684\u7b2c\u4e00\u884c\u7b2c\u4e00\u5217\u5143\u7d20\u3002
const int mod = 1000000007;\n\nstruct Matrix {\n int a[3][3];\n\n Matrix() { memset(a, 0, sizeof a); }\n\n Matrix operator*(const Matrix &b) const {\n Matrix res;\n for (int i = 1; i <= 2; ++i)\n for (int j = 1; j <= 2; ++j)\n for (int k = 1; k <= 2; ++k)\n res.a[i][j] = (res.a[i][j] + a[i][k] * b.a[k][j]) % mod;\n return res;\n }\n} ans, base;\n\nvoid init() {\n base.a[1][1] = base.a[1][2] = base.a[2][1] = 1;\n ans.a[1][1] = ans.a[1][2] = 1;\n}\n\nvoid qpow(int b) {\n while (b) {\n if (b & 1) ans = ans * base;\n base = base * base;\n b >>= 1;\n }\n}\n\nint main() {\n int n = read();\n if (n <= 2) return puts(\"1\"), 0;\n init();\n qpow(n - 2);\n println(ans.a[1][1] % mod);\n}\n
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#hdu-1005-number-sequence","title":"HDU 1005 Number Sequence","text":"\\(\\text{\u7ed9\u51fa\u4e00\u4e2a\u6570\u5217\u5b9a\u4e49\u5982\u4e0b\uff1a}f(1)=1,f(2)=1,f(n)=Af(n-1)+Bf(n-2),\\text{\u8ba1\u7b97}f(n)\\) $$ \\begin{bmatrix}F(n-1) \\ F(n-2)\\end{bmatrix}\\begin{bmatrix}A&B\\\\1&0\\end{bmatrix} = \\begin{bmatrix}F(n) \\ F_(n-1)\\end{bmatrix} $$
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lightoj-1070-algebraic-problem","title":"LightOJ 1070 Algebraic Problem","text":"\u7ed9\u51fa \\(a+b\\) \u548c \\(ab\\) \u7684\u503c\uff0c\u6c42\\(a^n+b^n\\) \u7b54\u6848\u5bf9 \\(2^{64}\\) \u53d6\u6a21
\u5148\u8bf4\u6a21\u6570\uff0c\u8fd9\u4e2a\u6a21\u6570\u5f88\u597d\uff0c\u76f4\u63a5\u5f00 unsigned long long
\u81ea\u7136\u6ea2\u51fa\u5c31\u53ef\u4ee5\u4e86\u3002\u867d\u7136\u53ef\u80fd\u4e0d\u5b89\u5168 $$ (a^n+b^n)(a+b)=(a^{n+1}+b^{n+1}+ab(a^{n-1}+b^{n-1})) $$ \u4e8e\u662f\uff0c\u4ee4 \\(A =a+b,B=ab,F(n) =a^n+b^n\\)\uff0c\u6709 $$ \\begin{bmatrix}A&-B\\\\1&0\\end{bmatrix}\\begin{bmatrix}F(n) \\ F(n-1)\\end{bmatrix} = \\begin{bmatrix}F(n+1) \\ F_(n)\\end{bmatrix} $$ \u6240\u4ee5\u8fd9\u4e5f\u662f\u4e00\u79cd\u8fed\u4ee3\u7684\u601d\u60f3\uff08\u725b\u987f\u8fed\u4ee3\u6cd5\u7b97\u6839\u53f7\uff09 \u77e9\u9635\u5feb\u901f\u5e42\u53ef\u4ee5\u7528\u6765\u52a0\u901f\u52a8\u6001\u89c4\u5212\uff0c\u8fd8\u6709\u5e7f\u4e49\u7684\u77e9\u9635\u4e58\u6cd5\u4ee5\u53ca\u8f6c\u79fb\u77e9\u9635\u7684\u76f8\u5173\u64cd\u4f5c\uff0c\u4f46\u662f\u8fd9\u91cc\u4e0d\u60f3\u6d89\u53ca\uff0c\u56e0\u4e3a\u6709\u70b9\u8d85\u7eb2\u4e86\uff0c\u6709\u7684\u8fd8\u662f\u63a7\u5236\u8bba\u90a3\u8fb9\u7684\u5185\u5bb9\u3002
\u5b9e\u9645\u4e0a\uff0c\u7279\u5f81\u5411\u91cf\u8fd8\u80fd\u7528\u6765\u6c42\u89e3\u5fae\u5206\u65b9\u7a0b\uff0c\u56e0\u4e3a\u79ef\u5206\u548c\u5fae\u5206\u90fd\u662f\u7ebf\u6027\u8fd0\u7b97\uff0c\u4f46\u662f\u8fd9\u91cc\u5c31\u4e0d\u5c55\u5f00\u4e86\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#25000000000","title":"\u4ef7\u503c\u00a0$25,000,000,000\u7684\u7279\u5f81\u5411\u91cf","text":"Google \u6210\u529f\u7684\u79d8\u8bc0\uff1a\u4e3a\u4e92\u8054\u7f51\u4e0a\u6240\u6709\u7684\u9875\u9762\u91cd\u8981\u6027\u6392\u5e8f
\u63a8\u8350\u7cfb\u7edf\uff1a\u5982\u4f55\u4e3a\u4f60\u9884\u6d4b\u5bf9\u5546\u54c1\u7684\u8bc4\u5206\uff1f
Alice Bob Cathy Davy \u82f9\u679c 1 \uff1f 1 \uff1f \u6a59\u5b50 \uff1f \uff1f \uff1f 3 \u9999\u8549 3 \uff1f \uff1f \uff1f \u897f\u74dc 5 4 \uff1f \uff1f\u77e9\u9635\u5206\u89e3\uff1a\\(M_{m\\times n}=P_{m\\times k}\\times Q_{k\\times {n}}\\)\u200b \\(k\\)\u00a0\u662f\u9690\u85cf\u7684 \u201c\u7ef4\u5ea6\u201d (Latent factor model) - \u5982\u679c\u00a0\\(k\\)\u00a0\u5f88\u5c0f\uff0c\u6211\u4eec\u5c31\u6709\u8db3\u591f\u7684\u6570\u636e\u6c42\u89e3\u51fa \u201c\u6700\u5408\u9002\u201d \u7684\u00a0\\(P\\)\u00a0\u548c\u00a0\\(Q\\) - \u6bcf\u4e2a\u4eba\u5bf9\u7269\u54c1\u7684\u504f\u597d\u662f\u4e00\u7cfb\u5217\u7279\u5f81\u7684\u7ebf\u6027\u7ec4\u5408
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#crypto","title":"\u5bc6\u7801\u5b66 | Crypto","text":"\u4eca\u5929\u7684\u5bc6\u7801\u5b66\u5185\u5bb9\u662f\u683c\u5bc6\u7801\u7684\u4e13\u573a\uff0c\u662f\u5bc6\u7801\u5b66\u7684\u4e00\u4e9b\u524d\u6cbf\u7814\u7a76\u5185\u5bb9\u4e86\uff0c\u5c5e\u4e8e\u73b0\u4ee3\u5bc6\u7801\u5b66\u518d\u5f80\u540e\u7684\u540e\u91cf\u5b50\u65f6\u4ee3\u5bc6\u7801\u5b66\u7684\u5185\u5bb9\uff0c\u6574\u70b9\u73b0\u4ee3\u7684\uff0c\u4f46\u662f\u65e0\u52a0\u89e3\u5bc6\u76f8\u5173\u7684\u5185\u5bb9\uff0c\u53ea\u5173\u5fc3\u4ec0\u4e48\u662f\u683c\uff0c\u56e0\u6b64\u662f\u5802\u5802\u6b63\u6b63\u7684\u6570\u5b66\u8bfe\u3002 \u53e4\u5178\u7684\u5bc6\u7801\u6ca1\u5565\u597d\u73a9\u7684\uff0c\u73b0\u5728\u9898\u76ee\u51fa\u7684\u548c\u8003\u8111\u6d1e\u662f\u4e00\u6837\u7684\uff0c\u53ea\u6709\u5b8c\u6574\u7684\u9006\u5411\u4e86\u51fa\u9898\u4eba\u7684\u8111\u6d1e\u624d\u80fd\u505a\u51fa\u6765\u3002\uff08\u67d0\u79cd\u7a0b\u5ea6\u4e0a\u7684\u9006\u5411\uff09 \u73b0\u4ee3\u5bc6\u7801\u5b66\u6a21\u5757\u7684\u8bdd\uff0c\u7b97\u6cd5\u7684\u5b9e\u73b0\u5fc5\u4e0d\u53ef\u5c11\uff0c\u4f46\u662f\u8981\u6574\u70b9\u73b0\u4ee3\u7684\u8bdd\u5e94\u8be5\u662f\u5b89\u5168\u8bc1\u660e\u90a3\u8fb9\u3002
\u5148\u4ecb\u7ecd\u4e00\u4e0b\u683c\u5bc6\u7801\u7684\u6210\u5c31\uff08\uff1f\uff09 \u5df2\u7ecf\u516c\u5e03\u76844\u4e2aNIST\u6297\u91cf\u5b50\u6807\u51c6\u4f18\u80dc\u7b97\u6cd5\u4e2d\uff0c\u67093\u4e2a\u662f\u683c\u5bc6\u7801\uff0c\u5360\u6bd4\u8fbe\u5230\u4e86\u60ca\u4eba\u768475%\uff0c\u9065\u9065\u9886\u5148\u4e8e\u5176\u4ed6\u7b97\u6cd5\u3002\uff08\u622a\u6b62\u52302022\u5e749\u6708\uff09
\u5728 7 \u4e2a\u6b63\u5f0f\u5165\u9009\u7b2c\u4e09\u8f6e\u7684\u7b97\u6cd5\u4e2d\uff0c\u67095\u4e2a\u90fd\u5c5e\u4e8e\u683c\u5bc6\u7801\u7684\u8303\u7574\uff0c\u800c\u4e0e\u6b64\u540c\u65f6\uff0c\u5728\u6211\u56fd2019\u5e74\u5bc6\u7801\u5b66\u4f1a\u4e3e\u529e\u7684\u540e\u91cf\u5b50\u5bc6\u7801\u7b97\u6cd5\u7ade\u8d5b\u4e2d\uff0c\u683c\u5bc6\u7801\u4e5f\u5728\u5176\u4e2d\u5360\u636e\u4e86\u76f8\u5f53\u5927\u7684\u6bd4\u4f8b\u3002
\u8fd1\u4ee3\u683c\u5bc6\u7801\u7684\u65f6\u95f4\u7ebf
Lattice\u53ef\u4ee5\u88ab\u60f3\u8c61\u6210\u662f\u4e00\u4e2a\u7a7a\u95f4\u4e2d\u5f88\u591a\u6709\u89c4\u5f8b\u5206\u5e03\u7684\u3001\u79bb\u6563\u7684\u70b9\u3002 \\(n\\)\u7ef4\u7a7a\u95f4\u4e2d\u6700\u7b80\u5355\u7684 Lattice \u5c31\u662f Integer Lattice\uff08\u6574\u6570\u683c\uff09\u3002\u6574\u6570\u683c\u4e2d\u6700\u7b80\u5355\u7684\u5c31\u662f\u57fa\u4e8e\u7b1b\u5361\u5c14\u5750\u6807\u7cfb\u7684\\(i,j\\)...\u7b49\u57fa\u5411\u91cf\u7ec4\u6210\u7684\u7a7a\u95f4\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#latticebases","title":"Lattice\u4e0eBases\uff08\u683c\u4e0e\u57fa)","text":"\u66f4\u597d\u7684\u63cf\u8ff0\u4e00\u4e2a\u683c\u7684\u65b9\u6cd5\u662f\u4f7f\u7528\u57fa\u5411\u91cf\u3002
\u6211\u4eec\u5047\u8bbe\u4e00\u4e2a\u683c\u62e5\u6709\u57fa\u5411\u91cf\\(b_1,b_2...b_n\\)\u3002\u90a3\u4e48\u8fd9\u4e2aLattice\u5c31\u662f\u5b83\u7684\u57fa\u5411\u91cf\u7684\u4efb\u610f\u7ebf\u6027\u7ec4\u5408\u7684\u96c6\u5408\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u628a\u6240\u6709\u57fa\u5411\u91cf\u7ec4\u5408\u6210\u77e9\u9635 \\(B\\) \u6765\u8868\u793a\u3002 \u6ce8\u610f\uff0c\u4e00\u4e2a\u683c\u53ef\u4ee5\u6709\u591a\u4e2a\u57fa\u5e95\uff0c\u4e0d\u662f\u4e00\u4e00\u5bf9\u5e94\u7684\u5173\u7cfb\u3002 \u5982\u679c\u7cfb\u7edf\u6027\u7684\u5b9a\u4e49\u4e00\u4e0bLattice\u7684\u8bdd\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u8bf4Lattice\u662f \\(R^n\\) \u8fd9\u4e2a\u7a7a\u95f4\u4e2d\u7684\u4e00\u4e2a\u79bb\u6563\u7684\u3001\u5177\u6709\u52a0\u6cd5\u8fd0\u7b97\u7684\u5b50\u7fa4\uff08A discrete additive subgroup\uff09\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lattice_2","title":"Lattice \u7684\u57fa\u672c\u5c5e\u6027","text":"\u6211\u4eec\u77e5\u9053\uff0c\u5728\u4e00\u4e2a\u7ebf\u6027\u7a7a\u95f4\u91cc\u9762\uff0c\u4e00\u4e2a\u7a7a\u95f4 \\(V\\) \u7684 Determinant\uff08\u884c\u5217\u5f0f\uff09\\(det(V)\\) \u4ee3\u8868\u4e86\u8fd9\u4e2a\u7a7a\u95f4\u6240\u6709\u7684\u57fa\u5411\u91cf \\(b_i\\) \u6240\u7ec4\u6210\u7684\u51e0\u4f55\u4f53\u7684\u4f53\u79ef\u3002\u5728\u4e8c\u7ef4\u7a7a\u95f4\u91cc\uff0c\u4e24\u4e2a\u57fa\u5411\u91cf \\(b_1,b_2\\) \u7ec4\u6210\u7684\u5e73\u884c\u56db\u8fb9\u5f62\u7684\u9762\u79ef\u5c31\u662f\u8fd9\u4e2a\u7a7a\u95f4\u7684\u884c\u5217\u5f0f\u3002
\u540c\u7406\u53ef\u5f97\uff0c\u4e00\u4e2aLattice\u7684\u884c\u5217\u5f0f\u4e5f\u662f\u4e00\u6837\u7684\u2014\u2014\u5bf9\u5e94\u7684\u57fa\u5411\u91cf\u6240\u7ec4\u6210\u7684\u5e73\u884c\u516d\u9762\u4f53\u7684\u4f53\u79ef\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lattice_3","title":"Lattice \u7684\u5bc6\u5ea6","text":"\u6211\u4eec\u53ef\u4ee5\u7528\u4e00\u4e2aLattice\u7684Determinant\u6765\u8861\u91cf\u8fd9\u4e2a\u683c\u7684\u70b9\u9635\u5206\u5e03\u7684\u5bc6\u5ea6\u3002
\u9996\u5148\uff0c\u6211\u4eec\u628a\u4e0a\u4e00\u90e8\u5206\u57fa\u5411\u91cf\u7ec4\u6210\u7684\u591a\u9762\u4f53\u7684\u4e2d\u5fc3\u632a\u5230\u539f\u70b9\u4e0a\u6765\u3002\u8fd9\u6837\uff0c\u7a7a\u95f4 \\(P\\) \u4ecd\u7136\u4fdd\u6301\u76f8\u540c\u7684\u4f53\u79ef\u3002
\u968f\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u628a\u8fd9\u4e2a\u591a\u9762\u4f53\u590d\u5236\u591a\u4efd\uff0c\u7136\u540e\u5e73\u79fb\u5230\u6bcf\u4e00\u4e2aLattice\u4e2d\u7684\u70b9\u4e0a\u3002\u8fd9\u6837\u6211\u4eec\u5c31\u4f1a\u5f97\u5230\u5f88\u591a\u4efd \\(P\\)\uff0c\u5e76\u4e14\u8fd9\u4e9b\u591a\u9762\u4f53\u53ef\u4ee5\u5e73\u5206\u6574\u4e2a\u591a\u7ef4\u7a7a\u95f4 \\(R^n\\)\u3002
\u6b64\u65f6\uff0c\u6211\u4eec\u5982\u679c\u5728\u8fd9\u4e2a\u7a7a\u95f4\u4e2d\u4efb\u610f\u7684\u753b\u4e00\u4e2a\u7403\u4f53\uff08\u591a\u7ef4\u7a7a\u95f4\u5373\u8d85\u7403\u4f53\uff09\uff0c\u7136\u540e\u53ef\u4ee5\u6570\u6570\u770b\u8fd9\u4e2a\u7403\u4f53\u4e2d\u8986\u76d6\u4e86\u591a\u5c11Lattice\u91cc\u7684\u70b9\u3002\u70b9\u7684\u6570\u91cf\u5e73\u5747\u4e8e\u7403\u4f53\u7684\u4f53\u79ef\uff0c\u5c31\u662f\u8fd9\u4e2a\u683c\u7684\u5bc6\u5ea6\u4e86\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_21","title":"\u6700\u77ed\u8ddd\u79bb","text":"\u6211\u4eec\u4e00\u822c\u7528 \\(\\lambda_1\\) \u6765\u5b9a\u4e49\u6574\u4e2a\u683c\u4e2d\u70b9\u4e0e\u70b9\u4e4b\u95f4\u6700\u77ed\u7684\u8ddd\u79bb\u3002\u4e00\u822c\u4e3a\u4e86\u65b9\u4fbf\u7406\u89e3\uff0c\u6211\u4eec\u5c31\u628a\u5176\u4e2d\u7684\u4e00\u4e2a\u70b9\u8bbe\u7f6e\u6210\u5750\u6807\u8f74 \\(O\\) \u70b9\uff0c\u7136\u540e \\(\\lambda_1\\)\u5c31\u53d8\u6210\u4e86\u8ddd\u79bb \\(O\\) \u70b9\u8ddd\u79bb\u6700\u8fd1\u7684\u683c\u70b9\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_22","title":"\u8ddd\u79bb\u51fd\u6570\u4e0e\u8986\u76d6\u534a\u5f84","text":"\u7ed9\u5b9a\u4efb\u610f\u4e00\u4e2a\u70b9 \\(t\\)\uff08\u8fd9\u4e2a\u70b9\u4e0d\u9700\u8981\u5728Lattice\u4e0a\uff09\uff0c\u6211\u4eec\u53ef\u4ee5\u5b9a\u4e49\u8ddd\u79bb\u51fd\u6570 \\(\\mu(t,L)\\) \u4e3a\u8fd9\u4e2a\u70b9\u5230\u9644\u8fd1\u7684Lattice\u70b9\u7684\u6700\u77ed\u8ddd\u79bb\u3002
\u540c\u7406\u53ef\u5f97\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u5de6\u53f3\u79fb\u52a8 \\(t\\) \u7684\u4f4d\u7f6e\uff0c\u7136\u540e\u5c31\u53ef\u4ee5\u627e\u5230\u5728\u8fd9\u4e2a Lattice \u4e2d\u53ef\u4ee5\u5f97\u5230\u7684\u6700\u5927\u7684 \\(\\mu\\)\u3002\u6211\u4eec\u4e00\u822c\u79f0\u8fd9\u4e2a\u6700\u5927\u503c\u53eb\u8986\u76d6\u534a\u5f84\uff08Covering Radius\uff09\u3002 \u76f4\u5230\u6240\u6709\u7684\u5706\u6b63\u597d\u5b8c\u7f8e\u7684\u8986\u76d6\u4e86\u6240\u6709\u7684\u7a7a\u95f4\u7684\u65f6\u5019\uff0c\u8fd9\u4e2a\u65f6\u5019\u7684\u534a\u5f84\uff0c\u5c31\u662f\u6211\u4eec\u4e4b\u524d\u5f97\u5230\u7684 \\(\\mu\\) \u4e86\u3002\u8fd9\u5c31\u662f\u8986\u76d6\u534a\u5f84\u8fd9\u4e00\u540d\u5b57\u7684\u7531\u6765\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#minkowski","title":"Minkowski\u51f8\u96c6\u5b9a\u7406","text":"\u6700\u91cd\u8981\u7684\u7528\u5904\u5c31\u662f\u7ed9\u51fa\u4e00\u4e2aLattice\u4e2d\u6700\u77ed\u5411\u91cf\u7684\u4e00\u4e2a\u4e0a\u9650\u503c\u3002\u7406\u89e3\u8fd9\u4e2a\u73a9\u610f\u53ef\u80fd\u9700\u8981\u5f15\u5165\u51f8\u5305\u7684\u6982\u5ff5\uff0c\u5c31\u7ed9\u7ed3\u8bba\u5427\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#svpshortest-vector-problem","title":"SVP\u95ee\u9898\uff08Shortest Vector Problem\uff09","text":"\u987e\u540d\u601d\u4e49\uff0c\u6700\u77ed\u5411\u91cf\u95ee\u9898\uff08SVP\uff0cShortest Vector Problem\uff09 \u5c31\u662f\u5728\u683c\u4e2d\u627e\u5230\u201c\u957f\u5ea6\u201d\u6700\u77ed\u7684\u5411\u91cf\u3002 \u4e00\u4e2a\u5f88\u76f4\u89c2\u7684\u60f3\u6cd5\uff0c\u5982\u679c\u6211\u4eec\u624b\u4e0a\u7684\u683c\u57fa\u662f\u76f8\u4e92\u6b63\u4ea4\u7684\uff0c\u90a3\u4e48\u6211\u4eec\u53ea\u9700\u8981\u904d\u5386\u683c\u57fa\u4e2d\u7684\u5404\u4e2a\u5411\u91cf\u5c31\u53ef\u4ee5\u627e\u5230\u6700\u77ed\u7684\u5411\u91cf\u4e86\u3002
\u4e8e\u662f\u6211\u4eec\u5c31\u53d1\u73b0\u4e86\u8fd9\u4e2a\u60ca\u5929\u79d8\u5bc6\uff1a\u4e3a\u4e86\u627e\u5230\u6700\u77ed\u5411\u91cf\uff0c\u5c31\u8981\u5c3d\u91cf\u4f7f\u5f97\u683c\u57fa\u6b63\u4ea4\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#cvpclosest-vector-problem","title":"CVP\u95ee\u9898\uff08Closest Vector Problem\uff09","text":"Lattice\u4e2d\u53e6\u4e00\u5927\u95ee\u9898\u5c31\u662f\u6700\u8fd1\u5411\u91cf\u95ee\u9898\uff08CVP\uff0cClosest Vector Problem\uff09\u4e86\u3002\u95ee\u9898\u7684\u5b9a\u4e49\u662f\u8fd9\u6837\u7684\uff1a\u7ed9\u5b9a\u8fde\u7eed\u7a7a\u95f4\u4e2d\u4efb\u610f\u7684\u4e00\u4e2a\u70b9\u00a0\\(t\\)\u00a0\uff0c\u627e\u5230\u8ddd\u79bb\u8fd9\u4e2a\u70b9\u6700\u8fd1\u7684\u683c\u70b9\u00a0\\(B_x\\)
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#cvp-svp","title":"CVP \u2192 SVP","text":"\u5982\u679c\u80fd\u591f\u4e00\u62db\u9c9c\u5403\u904d\u5929\uff0c\u90a3\u4f55\u4e50\u800c\u4e0d\u4e3a\u5462\uff1f\u53e6\u5916\u5c31\u662f\u56e0\u4e3a\u65e5\u76ca\u589e\u957f\u7684\u653b\u51fb\u624b\u6cd5\u548c\u4e0d\u592a\u591f\u7684\u8111\u5bb9\u91cf\u4e4b\u95f4\u7684\u77db\u76fe\u3002 \u4e3a\u4e86\u65b9\u4fbf\u6f14\u793a\uff0c\u5047\u8bbe\u6211\u4eec\u6709\u4e00\u4e2a\u4e00\u7ef4\u7684\u683c\uff0c\u7136\u540e\u6211\u4eec\u9700\u8981\u627e\u5230\u8ddd\u79bb\u70b9\u00a0\\(t\\)\u00a0\u6700\u8fd1\u7684\u683c\u70b9\u00a0\\(B_x\\)
\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u8fdb\u884c\u4e00\u4e2a\u7c7b\u4f3c\u4e8e\u201c\u5347\u7ef4\u201d\u7684\u64cd\u4f5c\uff0c\u4f7f\u5f97\u00a0\\(t\\)\u00a0\u70b9\u4e5f\u6210\u4e3a\u65b0\u683c\u7684\u4e00\u4e2a\u683c\u70b9\u3002
\u7136\u540e\u5728\u8fd9\u4e2a\u65b0\u683c\u4e2d\u6211\u4eec\u89e3\u51b3\u4e00\u4e0b\u00a0SVP\uff0c\u627e\u5230\u6700\u77ed\u5411\u91cf\uff0c\u7136\u540e\u518d\u5c06\u8fd9\u4e2a\u6700\u77ed\u5411\u91cf\u6295\u5f71\u56de\u539f\u6765\u7684\u4f4e\u7ef4\u4e2d\uff0c\u6211\u4eec\u5c31\u80fd\u627e\u5230\u539f\u6765\u683c\u4e2d\u8ddd\u79bb\u00a0\\(t\\)\u00a0\u6700\u8fd1\u7684\u683c\u70b9\u00a0\\(B_x\\)\u00a0\u4e86\u3002 \u4e8e\u662f\u538b\u529b\u6765\u5230\u89e3\u51b3\u00a0SVP\u00a0\u8fd9\u8fb9\uff0c\u800c\u6211\u4eec\u4e4b\u524d\u4e5f\u8bf4\u4e86\uff0c\u201c\u4e3a\u4e86\u627e\u5230\u6700\u77ed\u5411\u91cf\uff0c\u5c31\u8981\u5c3d\u91cf\u4f7f\u5f97\u683c\u57fa\u6b63\u4ea4\u201d\uff0c\u4e8e\u662f\u538b\u529b\u53c8\u6765\u5230\u00a0\u627e\u5230\u6b63\u4ea4\u57fa\u00a0\u8fd9\u8fb9\u3002\uff08\u65bd\u5bc6\u7279\u6b63\u4ea4\u5316\u7528\u5728\u54ea\u91cc\u6709\u70b9\u6570\u4e86\u54c8\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#lll","title":"LLL \u7b97\u6cd5","text":"\u6ca1\u9519\uff0c\u7528\u6765\u5bfb\u627e\u6b63\u4ea4\u57fa\u7684\u7b97\u6cd5\uff0c\u5927\u6982\u4e5f\u8bb8\u53ef\u80fd\uff0c\u5f88\u591a\u4eba\u53ea\u8981\u4f1a\u6389\u5305\u5c31\u53ef\u4ee5\u4e86\u3002
Fear the science. \u5c3d\u7ba1\u5f88\u524d\u6cbf\uff0c\u4f46\u662f\u8fd8\u662f\u90a3\u53e5\u8bdd\uff1a\u8fd9\u4e9b\u90fd\u662f\u5165\u95e8\uff0c\u751a\u81f3\u5165\u95e8\u7684\u8fb9\u90fd\u7b97\u4e0d\u4e0a\uff0c\u656c\u754f\u79d1\u5b66\u3002
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_23","title":"\u7ebf\u6027\u89c4\u5212","text":"\u8f6f\u4ef6\u5de5\u7a0b\u6709\u4e00\u95e8\u8bfe\u53eb\u51f8\u4f18\u5316\uff0c\u4f46\u662f\u6211\u4f5c\u4e3a\u4e00\u4e2a\u7f51\u5b89\u7684\u6ca1\u5b66\u8fc7\u4e5f\u4e0d\u4f1a\u5b66\uff08\u7406\u76f4\u6c14\u58ee\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#_24","title":"\u56fe\u8bba","text":"\u4e8c\u5206\u56fe\uff0c\u7f51\u7edc\u6d41\u5565\u7684\uff0c\u7531\u4e8e\u7b97\u6cd5\u7ade\u8d5b\u9000\u5f79\u591a\u5e74\uff0c\u4eba\u83dc\uff0c\u7559\u5f85\u540e\u4eba\u8865\u5145\u3002\uff08\u76f8\u4fe1\u540e\u4eba\u7684\u667a\u6167\uff09
"},{"location":"salon/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E5%BA%94%E7%94%A8/#reference","title":"\u53c2\u8003 | Reference","text":"\u5357\u5927\u848b\u708e\u5ca9\u8001\u5e08\u5bf9\u4e2d\u5b66\u751fJSNOI\u5206\u4eab\uff1a https://jyywiki.cn/OI/
\u95eb\u4ee4\u742a\u8001\u5e08\u7684Games101\uff1a https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
3blue1brown: https://www.3blue1brown.com/
Zach\u6570\u5b66\u7cfb\u5217: https://www.youtube.com/watch?v=i8FukKfMKCI&t=110s
Van1sh\u7684\u535a\u5ba2\uff1ahttp://jayxv.github.io/2023/10/17/\u5bc6\u7801\u5b66\u57fa\u7840\u4e4b\u683c\u4e2d\u96be\u9898\u4e0e\u683c\u57fa\u89c4\u7ea6/
Steven Yue\u7684\u6587\u7ae0\uff1a Steven Yue - \u77e5\u4e4e (zhihu.com)
2020\u5e74Simons\u683c\u5bc6\u7801\u8bb2\u5ea7\uff1aLattices: Algorithms, Complexity, and Cryptography Boot Camp (berkeley.edu)
"}]} \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 1ca6e72f578e092500b3832c3d72135a5d820cbb..0810d5bce7fb41f7448480121c029e11c55532a4 100644 GIT binary patch delta 12 Tcmb=gXOr*d;PC96$W{pe7f}PD delta 12 Tcmb=gXOr*d;83rc$W{pe7Hb1= diff --git a/template/index.html b/template/index.html index 085d35d..e937b5f 100644 --- a/template/index.html +++ b/template/index.html @@ -235,6 +235,26 @@ +