uoj328. 【UTR #3】量子破碎
题意 有一个长度为 \(2 ^ n\) ,下标依次为 \(0, 1, \ldots, 2 ^ n - 1\) 的数组,你要和交互库进行若干轮操作。 每次操作开始时,数组里只有 \(a[x] = a[y] = \frac{1}{\sqrt 2} (x \neq y)\) ,剩下的元素都是0。 你要和交互库进行多次交互,求出 \(x \oplus y\) 的值(保证操作过程中 \(x \oplus y\) 不变)。 你可以进行两种操作: query : 作一次询问,交互库会随机返回一个下标,返回 \(x\) 的概率是 \(\frac{a[x] ^ 2}{\sum_{i = 0} ^ {n - 1} a[i] ^ 2}\) ,然后会开始新的一轮,交互库会重新ran一对 \(x, y\) ,保证 \(x \oplus y\) 不变的前提下,对数组进行同上的赋值。 manipulate(A, i) : 给出一个 \(2 \times 2\) 的实数矩阵 \(A\) ,交互库会把数组 \(a\) 更新,具体来说,即: \[ \begin{cases} a'[x] = A[0][0] a[x] + A[1][0] a[x + 2 ^ i] \\ a'[x + 2 ^ i] = A[0][1] a[x] + A[1][1] a[x + 2 ^ i] \\ \end{cases} \]