• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

:star2: Wiki of OI / ICPC for everyone. (某大型游戏线上攻略,内含炫酷算术魔法)


コミットメタ情報

リビジョンc0701ce58769d16028c253b28e0261bbcf029f72 (tree)
日時2021-01-31 22:07:57
作者Early <lin_erli@outl...>
コミッターGitHub

ログメッセージ

Refactor matrix-tree

変更サマリ

差分

--- a/docs/graph/matrix-tree.md
+++ b/docs/graph/matrix-tree.md
@@ -104,13 +104,13 @@ $$
104104
105105 ## 例题
106106
107-???+ note "[「HEOI2015」小 Z 的房间](https://loj.ac/problem/2122)"
107+???+ note "例题 1:[「HEOI2015」小 Z 的房间](https://loj.ac/problem/2122)"
108108
109- **解** 矩阵树定理的裸题。将每个空房间看作一个结点,根据输入的信息建图,得到 Laplace 矩阵后,任意删掉 $L$ 的第 $i$ 行第 $i$ 列,求这个子式的行列式即可。求行列式的方法就是高斯消元成上三角阵然后算对角线积。另外本题需要在模 $k$ 的整数子环 $\mathbb{Z}_k$ 上进行高斯消元,采用辗转相除法即可。
109+ **解** 矩阵树定理的裸题。将每个空房间看作一个结点,根据输入的信息建图,得到 Laplace 矩阵后,任意删掉 $L$ 的第 $i$ 行第 $i$ 列,求这个子式的行列式即可。求行列式的方法就是高斯消元成上三角阵然后算对角线积。另外本题需要在模 $k$ 的整数子环 $\mathbb{Z}_k$ 上进行高斯消元,采用辗转相除法即可。
110110
111-???+ note "[「FJOI2007」轮状病毒](https://www.luogu.com.cn/problem/P2144)"
111+???+ note "例题 2:[「FJOI2007」轮状病毒](https://www.luogu.com.cn/problem/P2144)"
112112
113- **解** 本题的解法很多,这里用矩阵树定理是最直接的解法。当输入为 $n$ 时,容易写出其 $n+1$ 阶的 Laplace 矩阵为:
113+ **解** 本题的解法很多,这里用矩阵树定理是最直接的解法。当输入为 $n$ 时,容易写出其 $n+1$ 阶的 Laplace 矩阵为:
114114
115115 $$
116116 L_n = \begin{bmatrix}
@@ -131,66 +131,67 @@ $$
131131
132132 **解** 推导递推式后利用矩阵快速幂即可求得。
133133
134-??? danger "推导递推式的过程。警告:过程冗杂"
135- 注意到 $L_n$ 删掉第 1 行第 1 列以后得到的矩阵很有规律,因此其实就是在求矩阵
136-
137- $$
138- M_n = \begin{bmatrix}
139- 3& -1& 0& \cdots& 0& -1\\
140- -1& 3& -1& \cdots& 0& 0\\
141- 0& -1& 3& \cdots& 0& 0\\
142- \vdots& \vdots& \vdots& \ddots& \vdots& \vdots\\
143- 0& 0& 0& \cdots& 3& -1\\
144- -1& 0& 0& \cdots& -1& 3\\
145- \end{bmatrix}_{n}
146- $$
147-
148- 的行列式。对 $M_n$ 的行列式按第一列展开,得到
149-
150- $$
151- \det M_n = 3\det \begin{bmatrix}
152- 3& -1& \cdots& 0& 0\\
153- -1& 3& \cdots& 0& 0\\
154- \vdots& \vdots& \ddots& \vdots& \vdots\\
155- 0& 0& \cdots& 3& -1\\
156- 0& 0& \cdots& -1& 3\\
157- \end{bmatrix}_{n-1} + \det\begin{bmatrix}
158- -1& 0& \cdots& 0& -1\\
159- -1& 3& \cdots& 0& 0\\
160- \vdots& \vdots& \ddots& \vdots& \vdots\\
161- 0& 0& \cdots& 3& -1\\
162- 0& 0& \cdots& -1& 3\\
163- \end{bmatrix}_{n-1} + (-1)^n \det\begin{bmatrix}
164- -1& 0& \cdots& 0& -1\\
165- 3& -1& \cdots& 0& 0\\
166- -1& 3& \cdots& 0& 0\\
167- \vdots& \vdots& \ddots& \vdots& \vdots\\
168- 0& 0& \cdots& 3& -1\\
169- \end{bmatrix}_{n-1}
170- $$
171-
172- 上述三个矩阵的行列式记为 $d_{n-1}, a_{n-1}, b_{n-1}$ 。注意到 $d_n$ 是三对角行列式,采用类似的展开的方法可以得到 $d_n$ 具有递推公式 $d_n=3d_{n-1}-d_{n-2}$ 。类似地,采用展开的方法可以得到 $a_{n-1}=-d_{n-2}-1$ ,以及 $(-1)^n b_{n-1}=-d_{n-2}-1$ 。将这些递推公式代入上式,得到
173-
174- $$
175- \det M_n = 3d_{n-1}-2d_{n-2}-2
176- $$
177-
178- $$
179- d_n = 3d_{n-1}-d_{n-2}
180- $$
181-
182- 于是猜测 $\det M_n$ 也是非齐次的二阶线性递推。采用待定系数法可以得到最终的递推公式为
183-
184- $$
185- \det M_n = 3\det M_{n-1} - \det M_{n-2} + 2
186- $$
187-
188- 改写成 $(\det M_n+2) = 3(\det M_{n-1}+2) - (\det M_{n-2} + 2)$ 后,采用矩阵快速幂即可求出答案。
189-
190-???+ note "例题 3"
191- 「BZOJ3659」WHICH DREAMED IT
192-
193- **解** 本题是 BEST 定理的直接应用,但是要注意,由于题目规定“两种完成任务的方式算作不同当且仅当使用钥匙的顺序不同”,对每个欧拉回路,1 号房间可以沿着任意一条出边出发,从而答案还要乘以 1 号房间的出度。
134+ ??? danger "推导递推式的过程。警告:过程冗杂"
135+ 注意到 $L_n$ 删掉第 1 行第 1 列以后得到的矩阵很有规律,因此其实就是在求矩阵
136+
137+ $$
138+ M_n = \begin{bmatrix}
139+ 3& -1& 0& \cdots& 0& -1\\
140+ -1& 3& -1& \cdots& 0& 0\\
141+ 0& -1& 3& \cdots& 0& 0\\
142+ \vdots& \vdots& \vdots& \ddots& \vdots& \vdots\\
143+ 0& 0& 0& \cdots& 3& -1\\
144+ -1& 0& 0& \cdots& -1& 3\\
145+ \end{bmatrix}_{n}
146+ $$
147+
148+ 的行列式。对 $M_n$ 的行列式按第一列展开,得到
149+
150+ $$
151+ \det M_n = 3\det \begin{bmatrix}
152+ 3& -1& \cdots& 0& 0\\
153+ -1& 3& \cdots& 0& 0\\
154+ \vdots& \vdots& \ddots& \vdots& \vdots\\
155+ 0& 0& \cdots& 3& -1\\
156+ 0& 0& \cdots& -1& 3\\
157+ \end{bmatrix}_{n-1} + \det\begin{bmatrix}
158+ -1& 0& \cdots& 0& -1\\
159+ -1& 3& \cdots& 0& 0\\
160+ \vdots& \vdots& \ddots& \vdots& \vdots\\
161+ 0& 0& \cdots& 3& -1\\
162+ 0& 0& \cdots& -1& 3\\
163+ \end{bmatrix}_{n-1} + (-1)^n \det\begin{bmatrix}
164+ -1& 0& \cdots& 0& -1\\
165+ 3& -1& \cdots& 0& 0\\
166+ -1& 3& \cdots& 0& 0\\
167+ \vdots& \vdots& \ddots& \vdots& \vdots\\
168+ 0& 0& \cdots& 3& -1\\
169+ \end{bmatrix}_{n-1}
170+ $$
171+
172+ 上述三个矩阵的行列式记为 $d_{n-1}, a_{n-1}, b_{n-1}$ 。
173+ 注意到 $d_n$ 是三对角行列式,采用类似的展开的方法可以得到 $d_n$ 具有递推公式 $d_n=3d_{n-1}-d_{n-2}$ 。类似地,采用展开的方法可以得到 $a_{n-1}=-d_{n-2}-1$ ,以及 $(-1)^n b_{n-1}=-d_{n-2}-1$ 。
174+ 将这些递推公式代入上式,得到:
175+
176+ $$
177+ \det M_n = 3d_{n-1}-2d_{n-2}-2
178+ $$
179+
180+ $$
181+ d_n = 3d_{n-1}-d_{n-2}
182+ $$
183+
184+ 于是猜测 $\det M_n$ 也是非齐次的二阶线性递推。采用待定系数法可以得到最终的递推公式为
185+
186+ $$
187+ \det M_n = 3\det M_{n-1} - \det M_{n-2} + 2
188+ $$
189+
190+ 改写成 $(\det M_n+2) = 3(\det M_{n-1}+2) - (\det M_{n-2} + 2)$ 后,采用矩阵快速幂即可求出答案。
191+
192+???+ note "例题 3:「BZOJ3659」WHICH DREAMED IT"
193+
194+ **解** 本题是 BEST 定理的直接应用,但是要注意,由于题目规定“两种完成任务的方式算作不同当且仅当使用钥匙的顺序不同”,对每个欧拉回路,1 号房间可以沿着任意一条出边出发,从而答案还要乘以 1 号房间的出度。
194195
195196 ## 注释
196197