D. Solar Panel Grid Optimization
考虑将最后一列不停旋转,然后向左边推数进去,对每一行推了 \(n-1\) 次后,左边的所有 \(n-1\) 列的元素就匹配了。
具体操作是:从第 \(1\) 到 \(n-1\) 列一列列考虑,先把符合 \(b\) 的推进去,然后把最后一列转 \(n\) 次,再把剩下的推进去。
发现这样做直接花掉了 \(2n^2\) 次操作。
这样做完最后一列的元素 \(a_{i,n}\) 会 xor 上 \(\oplus (a_{i,j}\oplus b_{i,j})\),可能还有额外的全部翻转一次。但这样并不一定等于 \(b_{i,n}\)。
考虑写点乱搞,枚举每一列转若干下,这样这一列对于最终状态的贡献会改变。写个状压 DP 最小化转的次数,发现就过了。
大胆猜测随机打乱、写点线性基乱搞也能过。
E. Fast Median Transform
从后向前考虑,相当于有 \(nm\) 个区间 \([\min(a_{i},b_{i}),\max(a_{i},b_{i})]\),每次会区间取交一下,如果区间长度缩成 \(0\) 了答案就确定了;如果一直不是空区间,则答案就是 \(\text{clamp}(x,l,r)\)。