无用小寄巧

当题目中有直角坐标系并且有上下左右移动的限制时,由于 \(x\) 移动时 \(y\) 不能动,导致 \(x\)\(y\) 有限制不方便我们处理,可以将坐标系逆时针旋转 \(45\) 度,再放大 \(\sqrt{2}\) 倍,具体操作就是把所有点 \((x,y)\) 的坐标变为 \((x+y,y-x)\),上下左右就分别变成了 \((1,1),(-1,-1),(-1,1),(1,-1)\) 这样就可以把 \(x\)\(y\) 分开单独处理。


如果给出了坐标系上 \(x\)\(y\) 的范围,并且所有点都在整点上,那么可以将行和列作为点,对应位置的点就变成了行和列之间的连边,并且此时的图是一张二分图


\[E(x)=\sum_{i\geq1}p_i*i \]

\[E(x)=\sum_{i\geq1}p_i\sum_{j\leq i}1=\sum_{j\geq1}\sum_{i\geq j}p_i \]

概率的计算从等于变成了大于等于


判断矩乘结果是否等于另一个矩阵,可以随一个向量左乘在式子上,最后判断两个向量是否相等,多做几次大概率就能确定了。这样就从 \(n^3\) 的矩阵乘矩阵变成了 \(n^2\) 的向量乘矩阵。
例题 应用
点乘的式子很像矩阵乘法里一项的计算,于是发现我们其实是在判断在模 \(k\) 意义下,\(A=\{\vec a,\vec b,\cdots\}\)\(A^T\)\(A\) 的转置矩阵,\(A\times A^{T}\) 的对角线以外是否有 \(0\)

如果 \(k=2\),其实就是判断两个向量相乘是否等于另一个对角线上值可以 \(O(nd)\) 算,其他值都为 \(1\) 的矩阵。狂暴随机几次就可以 \(O(nd)\) 解决。

如果 \(k=3\),那么第三个矩阵可能有 \(1\)\(2\),但是我们发现 \(1^2\equiv 2^2\equiv 1\pmod 3\),所以我们把两边的式子都做一次点乘的平方再随机化。
此时右边很好搞,问题是左边。
左边最终向量的第 \(x\) 项为

\[\sum_{i=1}^n rd_i(\sum_{j=1}^dA_{i,j}A_{j,x}^T)^2 \]

把二次狂暴展开就可以变成

\[\sum_{j=1}^d\sum_{k=1}^dA_{x,j}A_{x,k}\sum_{i=1}^nrd_iA_{i,j}A_{i,k} \]

然后右边预处理一下就可以 \(O(nd^2)\) 解决。

posted @ 2022-03-10 17:19  llmmkk  阅读(18)  评论(0编辑  收藏  举报