2023.9.28 闲话

推歌:新长征路上的摇滚 - 崔健 .

看到某人写的论文《浅谈线性代数与图论的关系》,最后大概说了个这个:

矩阵的迹

对于两张图 \(G_1(V_1,E_1),G_2(V_2,E_2)\),定义其 Tensor 积 \(G(V,E)=G_1\times G_2\) 满足:

\[\begin{aligned}&V=\{(u,v)\mid u\in V_1,v\in V_2\}\\&E=\{((u_1,v_1),(u_2,v_2))\mid (u_1,v_1)\in E_1,(u_2,v_2)\in E_2\}\end{aligned} \]

如果按字典序排列 \((u,v)\),则对应到邻接矩阵上的关系是 Kronecker 积 \(\bf A=A_1\otimes A_2\) .

其中两个矩阵 \(\bf A,B\) 的 Kronecker 积定义为:

\[\bf A\otimes B=\begin{bmatrix}a_{1,1}\bf B&a_{1,2}\bf B&\cdots&a_{1,m}\bf B\\a_{2,1}\bf B&a_{2,2}\bf B&\cdots&a_{2,m}\bf B\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}\bf B&a_{n,2}\bf B&\cdots&a_{n,m}\bf B\end{bmatrix} \]

有性质 (Mixed-product):

\[\bf(A\otimes B)(C\otimes D)=(AC)\otimes(BD) \]

考察矩阵 \(\bf A,B\) 的特征值 \(\lambda_i,\mu_j\) 和特征向量 \(\bm x_i,\bm y_j\),则:

\[(\mathbf A\otimes\mathbf B)(\bm x_i\otimes\bm y_j)=(\mathbf A\bm x_i)\otimes(\mathbf B\bm y_i)=(\lambda_i\bm x_i)\otimes(\mu_i\bm y_i)=\lambda_i\mu_j(\bm x_i\otimes\bm y_j) \]

论文题 (例题 5.4.1)

给若干图 \(G_1,G_2,\cdots,G_k\),求 \(G=G_1\times G_2\times\cdots\times G_k\) 中长为 \(L\) 的回路数量,模 \(998244353\) .

\(\sum|V(G_i)|\le 500\)\(L\le 10^{18}\) .

如果 \(G\) 的邻接矩阵是 \(\bf A\),则要求的就是 \(\operatorname{trace}(\mathbf A^L)\) .

拆开之后就是要对每张图分别求 \(\operatorname{trace}(\mathbf A_i^L)\) 然后乘起来,如果特征值是 \(\lambda_i\),则欲求即为:

\[[z^L]\sum_i\dfrac1{1-\lambda_iz} \]

\(f(z)\) 是特征多项式,\(g(z)=f^{\sf R}(z)\)\(f\) 的系数翻转,则:

\[[z^L]\sum_i\dfrac1{1-\lambda_iz}=[z^{L-1}]\dfrac{g'(z)}{g(z)} \]

使用 Bostan-Mori 算法即可 \(\Theta(n\log n\log L)\) .

特征多项式可以 \(\Theta(n^3)\) 求得 .

好像就是把 2023.9.19 闲话的牛顿恒等式换为 Bostan-Mori,赢 .

所以有啥快速求特征多项式的方法吗???


Kaguya 有一个科技,形如你要在一个区间 \([l,r]\) 找一个对 \((x,y)\) 最大化 \(w_{xy}\) 的题目,可以考虑找出全局支配对 \(x_0,y_0\),然后将区间划分为 \([1,y_0)\)\((x_0,n]\) 两部分分治处理 .

由于某些原因,对于长度小于 \(O(\log n)\) 的区间,暴力处理 .

实际跑起来是非常快的,放几个例题:

静态第六分块

给一个序列 \(\{a_n\}\),每次给一个区间 \([l,r]\),求:

\[\max_{l\le x\le y\le r}\sum_{i\in[x,y]}a_i \]

每次找到全局最大子段和 \(x,y\),将区间划分为 \([1,x)\)\((y,n]\) 分治,小区间暴力即可 .

时间复杂度大概低于 \(O(n\sqrt{n/\log n})\) 但是实际上跑得非常快,如果有人能给出精确复杂度分析可以和我洽谈 .

因为好像展开写做法都是一样的所以后面就不写题解了:

虚空第零加护

给一个序列 \(\{a_n\}\),每次给一个区间 \([l,r]\),求:

\[\max_{l\le x\le y\le r}\operatorname{popcount}(a_x\oplus a_y) \]

(注:USACO23OPEN Field Day S

三级跳

给一个序列 \(\{a_n\}\),每次给一个区间 \([l,r]\),求 \((x,y,z)\) 满足:

  • \(l\le x<y<z\le r\) .
  • \(y-x\le z-y\) .
  • \(a_x+a_y+a_z\) 最大 .
posted @ 2023-09-28 06:24  Jijidawang  阅读(79)  评论(0编辑  收藏  举报
😅​