无用小寄巧
当题目中有直角坐标系并且有上下左右移动的限制时,由于 \(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\) 的范围,并且所有点都在整点上,那么可以将行和列作为点,对应位置的点就变成了行和列之间的连边,并且此时的图是一张二分图
概率的计算从等于变成了大于等于
判断矩乘结果是否等于另一个矩阵,可以随一个向量左乘在式子上,最后判断两个向量是否相等,多做几次大概率就能确定了。这样就从 \(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\) 项为
把二次狂暴展开就可以变成
然后右边预处理一下就可以 \(O(nd^2)\) 解决。