線性代數
線性
對於函式 \(f(x)\)(在實數域上)是線性的,當且僅當:對於任意 \(x,y,c\),有 \(f(x+y)=f(x)+f(y)\) 和 \(f(cx)=cf(x)\)。
定義域和值域:\(c\) 是“數”,\(x\) 和 \(f(x)\) 均為“可運算的元素”
向量表示與矩陣
向量
向量 \(\vec{v}\),是一個縱向的列表,列表的每個元素都是一個數。有時也可稱作列向量,並把向量的長度稱為向量的維數。
可以用一個 \(n\) 維向量描述一個物件的 \(n\) 個屬性。
向量加法:
\(\vec{u}+\vec{v}=\begin{bmatrix}u_1 \\u_2 \\\vdots \\u_n \end{bmatrix}+\begin{bmatrix}v_1 \\v_2 \\\vdots \\v_n \end{bmatrix}=\begin{bmatrix}u_1+v_1 \\u_2 +v_2\\\vdots \\u_n+v_n \end{bmatrix}\)
向量數乘:
\(c\vec{v}=c\begin{bmatrix}v_1 \\v_2 \\\vdots \\v_n \end{bmatrix}=\begin{bmatrix}cv_1 \\cv_2 \\\vdots \\cv_n \end{bmatrix}\)
線性函式的形式:
若函式 \(f\) 滿足 \(f(\vec{u})+f(\vec{v})=f(\vec{u}+\vec{v})\) 和 $
線性變換
矩陣表示
- 找出轉移所需的全部元素,列到一個向量裡
- 考慮轉移
- 矩陣快速冪最佳化
- Problem 1
計算連分數,單點修改+查詢。
- Problem 2
給定三個長度為 \(n\) 的序列 \(a,b,sum\),初始全為 \(0\),要求支援區間 \(a_i+=c,b_i+=c,sum_i+=a_i\times b_i\),查詢 \(sum\) 區間和。
用線段樹在每個下標處維護一個向量,轉移向量為 \(\begin{bmatrix}1 \\a_i \\b_i \\a_ib_i \\sum_i \end{bmatrix}\)
線段樹維護五階矩陣 \(O(125 n \log n)\),考慮最佳化。
注意到該矩陣是一個下三角矩陣,只列舉滿足 \(i\le j\le k\) 的下標,最佳化為 \(O(35 n \log n)\)。
注意到矩陣中有許多的無效項(對角線、\(a_i\) 對 \(b_i\) 的值永遠是 \(0\)),因此可以跳過,變為四階矩陣,最佳化為近 \(O(10n \log n)\)。
- P7739
太難了,不適合我 qwq,咕咕咕。
\(\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}\)