Loading

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\) 的顺序是反的。

把变换写成矩阵的形式

  1. \(b_i\gets b_i+cb_j\)
  2. \((b_i,b_j)\gets (b_j,b_i)\)
  3. \(b_i\gets b_j\)
  4. \(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} \]

操作的转置

上述四个操作的转置分别是:

  1. \(b_j\gets b_j+cb_i\)
  2. \((b_i,b_j)\gets (b_j,b_i)\)
  3. \((b_j,b_i)\gets (b_j+b_i,0)\)
  4. \(b_i\gets cb_i\)
posted @ 2022-06-22 20:00  Alan_Zhao_2007  阅读(71)  评论(0编辑  收藏  举报