2022 第一轮省队集训 Day4
100+10+15。
T1
列出式子
\[\sum_{1\le i\le n}\sum_{1\le j\le n}\sum_{1\le k\le n} [i<j<k][i+j+k=n][j+k>i].
\]
然后直接化简即可。
T2
洛谷链接。
极其复杂的 dp。首先需要会 \(\max(K,r_N)\le 10^6\) 的部分分,这是在 Trie 上大力 dp。然后将所有区间拆成若干个长度为 \(2\) 的次幂的区间。
T3
会了,但还没写代码。
转置原理
转置原理指的是用计算 \(\mathbf{a}=A\mathbf{b}\) 的算法计算 \(\mathbf{\hat b}=A^T\mathbf{\hat a}\) 的方式。
如果一个算法的运算过程中不会出现 \(\mathbf{b}\) 的非一次项(也就是零次项或者二次项、三次项、……),并且计算过程可以写成左乘一个常量矩阵 \(A\),那么这就是一个线性算法。比如多项式乘法、DFT 以及多项式复合都是线性算法,不过多项式乘法和复合需要固定其中一个多项式。
假如将 \(A\) 拆成 \(A_1A_2\cdots A_m\),那么 \(A\mathbf{b}=A_1A_2\cdots A_m\mathbf{b}\)。其转置算法指的就是 \(A^T\mathbf{b}=A_m^TA_{m-1}^T\cdots A_1^T\mathbf{b}\),注意这里各个 \(A_i\) 的顺序是反的。
把变换写成矩阵的形式
- \(b_i\gets b_i+cb_j\);
- \((b_i,b_j)\gets (b_j,b_i)\);
- \(b_i\gets b_j\);
- \(b_i\gets cb_i\)。
分别是:
\[\begin{bmatrix}b_i'\\b_j'\end{bmatrix}=\begin{bmatrix}1 & c\\ 0 & 1\end{bmatrix}\begin{bmatrix}b_i\\b_j\end{bmatrix}\tag{1}
\]
\[\begin{bmatrix}b_i'\\b_j'\end{bmatrix}=\begin{bmatrix}0 & 1\\ 1 & 0\end{bmatrix}\begin{bmatrix}b_i\\b_j\end{bmatrix}\tag{2}
\]
\[\begin{bmatrix}b_i'\\b_j'\end{bmatrix}=\begin{bmatrix}0 & 1\\ 0 & 1\end{bmatrix}\begin{bmatrix}b_i\\b_j\end{bmatrix}\tag{3}
\]
\[\begin{bmatrix}b_i'\\b_j'\end{bmatrix}=\begin{bmatrix}c & 0\\ 0 & 1\end{bmatrix}\begin{bmatrix}b_i\\b_j\end{bmatrix}\tag{4}
\]
操作的转置
上述四个操作的转置分别是:
- \(b_j\gets b_j+cb_i\);
- \((b_i,b_j)\gets (b_j,b_i)\);
- \((b_j,b_i)\gets (b_j+b_i,0)\);
- \(b_i\gets cb_i\)。
Written by Alan_Zhao