WC 记录
P1224:给定 \(n\) 个 \(d\) 维向量 \(A_i\),判断存在 \(i,j\) 使得 \(A_i\) 与 \(A_j\) 的内积为 \(k\) 的倍数,构造方案。\(n\le 10^5,d\le 30,k\in\{2,3\}\)。
题解:考虑 \(k=2\) 的情形。构造矩阵 \(M=A_1|A_2|...|A_k\),\(E=M\cdot M^T\) 那么 \(A_i\) 与 \(A_j\) 的内积等于 \(E_{i,j}\)。尝试判断模 \(2\) 意义下 \(E\) 是否为全 \(1\) 矩阵 \(X\)。随机一个 \(n\times 1\) 矩阵 \(r\),判断 \(r\cdots M\cdots M^T\) 是否等于 \(X\cdots r\)。这是容易计算的,复杂度为 \(O(Tnd)\),多跑几次正确率很高,构造方案是简单的。对于 \(k=3\),注意到 \(1^2=2^2=1\mod 3\),所以等价于矩阵 \(F_{i,j}=\sum (A_{i,x}\times A_{j,x})^2=\sum\limits_{x,y} A_{i,x}\times A_{j,x}\times A_{i,y}\times A_{j,y}\) 模 \(3\) 意义下是否全为一。\(F\) 可以视作一个 \((d^2)\times n\) 的矩阵与其转置矩阵相乘,后续做法同上,复杂度 \(O(Tnd^2)\)。
zky 原创题:给定序列 \(A\),要求支持区间 \(\text{reverse}\),区间查询选取区间内元素子集得到的最大 \(\text{xor}\) 和。\(n,q\le 5\times 10^4,A_i\le 2^{60}\)。
题解:考虑随机 \(K\) 个序列 \(B\),\(B_i\) 有一半概率为 \(A_i\),一般概率为 \(0\)。可以用平衡树维护这 \(K\) 个序列。有以下结论:对于询问 \([l,r]\),取 \(K\) 个序列中 \([l,r]\) 的异或和构成的线性基仅有 \(\frac{1}{2^K}\) 的概率与 \(A_i\) 中 \([l,r]\) 内元素线性基不等。感性理解就是,该线性基一定是真正线性基的子空间。随机 \(K\) 个元素得到 \(2^K\) 种线性组合,大概率得到真正的线性基。复杂度 \(n\log(nV)^2\)。
一般图最大匹配。\(n\le 500\)。
判断一般图是否存在长为 \(k\) 的曼哈顿路径。 \(k\le 17,n\le 100,m\le 100\)。
题解:考虑对于每个点 \(i\) 随机长为 \(k\) 的向量 \(y\),对于每条边 \(u\leftarrow v\) 随机权值 \(x_{u,v}\)。
容易发现若路径 \(v_1,v_2,...,v_k\) 存在 \(1\le i<j\le k\) 满足 \(v_i=v_j\),那么 \(\det(y_{v_1}|y_{v_2}|...|y_{v_k})=0\)。将 \(\det\) 展开,得到 \(\sum\limits_{l} sgn(l) \prod y_{v_i,l(i)}\)。发现 \(sgn\) 处理起来较为困难,不妨将式子对 \(2\) 取模然后多跑几次。为了保证正确性,另将一条路径的权值乘上经过的边的权值的成绩。现在,我们只需求 \(\sum\limits_{v} \prod y_{v_i,l(i)}\prod x_{v_i,v_{i+1}}\)。发现 \(l\) 是一个排列的条件比较难以刻画,而 \(l\) 是映射则较为容易。设 \(A_i\) 表示映射到的数中有 \(i\) 的映射集合,那么排列集合即为 \(\bigcap A_i\)。对 \(\bigcap A_i\) 容斥,转为 \(f(X)=\bigcap_{i\in X} \overline{A_i}=\{x|x\cap X=\emptyset\}\) 的和(注意到模 \(2\) 意义下 \(1=-1\))。\(f(X)\) 可以简单 dp 求得。复杂度 \(O(Tnk 2^k)\)。
QOJ8830:给定 $

浙公网安备 33010602011771号