7.30闲话
模拟赛
T1
签不上题(简化抽象题意)。
有 \(n\le 10^6\) 个点,\(0 \le a_i < 2^{20}\)。
对于每个 \(i\) 求:
\[\min_{j=1}^{i-1} \{ popcount(a_i\oplus a_j) \}
\]
考虑到答案小于等于 \(m\),共有 \(n \times m\) 种状态,没加入一个点暴力更新其它点答案即可,由于共 \(n\times m\) 种状态,所以时间复杂度为 \(O(n\times m^2)\)。
T2
[EC Final 2020] Random Shuffle
先想暴力,倒序枚举每个数还原出 \(rand()+1\),再枚举 \(x\) 判断 \(rand()\) 是否合法。
将 \(x\) 转化为一个关于 \(2^i\) 的一个系数方程,考虑到每个操作只有位运算,转移形如矩阵,每个 \(rand()%i\) 可提供 \(lowbit(i)\) 个方程。
将所有系数方程放到一起消元即可,由于 \(n\ge 50\),剩下的自由元不多 \(2^T\) 枚举即可。