21.8.2
T1: hdu4965 - Fast Matrix Calculation
(真的很水!)
\(n\) 很大,\(m\) 很小。不难想到利用结合律降低矩阵连乘复杂度。预处理出 \(BA\) 这个 \(m\times m\) 的矩阵。那么 \((AB)^{n^2}=A(BA)^{n^2-1}B\),中间那项我用的快速幂,不知道直接算行不行(直接算是 \(\mathrm O\!\left(m^3n^2\right)\) 感觉有点悬)。
\(\bmod 6\) 不知道是干啥的,感觉很迷惑!
T2: P3265 - 装备购买
给 \(n\) 个 \(m\) 维向量,每个向量有一个权值,求最多可以选多少个线性无关向量,以及极大线性无关组的权值和最小是多少。
初等行变换不改变列的线性相关性,这是好的。考虑观察高斯消元之后的向量们,是等价的。
注意到高斯消元天然地选择列号字典序最小的一组基作为主元列。一个猜想是,将列们按照 cost 排序,那么高斯消元选择的是权值和最小的基。这看起来是显然的,实则不显然,因为字典序最小不代表权值和最小,可能出现 \(a_1+a_4>a_2+a_3\) 的情况。考虑证明一下此处字典序最小确实是总权值最小。
观察行等价简化阶梯型的列们,设主元列序号是 \(i_{1\sim s}\),有 \(\pmb a_{i_j}=\pmb e_j\),令 \(i_{s+1}=n+1\),那么将列分为 \(\{[i_j,i_{j+1})\}\) 这些连续段,那么第 \(j\) 段是只有前 \(j\) 行才可能非零。那么前 \(j\) 段组成的向量组的秩显然为 \(j\),\(j+1\) 行下面全是 \(0\) 了都,于是前 \(j\) 段最多能选出 \(j\) 个线性无关向量,那么选出的第 \(j\) 个的位置肯定不在 \(i_j\) 前面(不然不可能实现在前 \(j-1\) 段这个 \(\mathrm{rank}=j-1\) 的向量组里面选 \(j\) 个线性无关向量),那么正确性就显然了吧(因为每个位置都选了理论最前位置)。
T3: P4463 - calc
由于互不相同,每种值的集合都有 \(n!\) 种排列,不妨强行令它单调(这样 DP 就不用 sb 地状压啦!)最后答案乘以 \(n!\)。
考虑一个显然的 DP:\(dp_{i,j}\) 表示选了 \(i\) 个,值都要在 \([1,j]\) 内的权值和。显然有转移 \(dp_{i,j}=\sum\limits_{k=1}^jkdp_{i-1,k-1}\)。但是 \(j\) 比较大,是 1e9,不能直接做。但是容易发现一个事情:\(dp_{0}\) 是关于 \(j\) 的零次多项式,\(dp_1\) 是二次,那么 \(dp_{i}\) 是关于 \(j\) 的 \(2i\) 次多项式。证明比较容易,归纳的话,转移式里 \(kdp_{i-1,k-1}\) 是关于 \(k\) 的 \(2i-1\) 次多项式,根据等幂和的理论,它的前缀和是 \(2i\) 次多项式。
那么可以拉格朗日插值(虽然我现在还没学多项式,但是也是可以勉强写写的,毕竟不难),先平方递推出 \(dp_n\) 的 \(2n+1\) 项,再根据它们插值出 \(dp_{n,K}\)。这个还是直接求值,多项式系数都不用搞出来的。观察插值公式可知拉格朗日插值在模意义下成立。
T4: P5320 - 勘破神机
太难了不会。计划顺利的话应该是今年年底的时候能会这题。