考虑对于双方的数列各设定一个随机种子,并用生成的随机 01 数列与给定数列异或,此时数列可以看作两个均匀随机的数列,最后解码时只需要异或回去即可。
考虑如下朴素的策略,双方将答案转换为高精度数,接下来每次操作:
- 若双方得分相等,那么双方将自己的数除以 $3$,并传输余数,仍然保持平局的概率为 $\frac{1}{3}$。
- 否则,取传输进度慢的一方,将自己的数除以 $2$,并传输余数,回到平局状态的概率为 $\frac{1}{2}$。
这样的策略无法通过,接下来考虑优化。考虑设定一个概率 $p$,让得分不同时,有 $p$ 的概率回到平局状态。具体地,维护一个当前答案候选区间 $[l, r)$,按照 $p : 1 - p$ 的比例分为 $[l, x)$ 和 $[x, r)$ 两部分即可。
若选择 $[l, x)$ 那么得到的信息量为 $-\log_2 p$ 否则为 $-\log_2 (1 - p)$。通过数学推导可以得出 $p \approx 76\%$ 时期望最优并且可以通过此题。
实现时,可以将给定字符串分为 $B$ 位一块每一块用 long long 计算来避免高精度运算并且损失的信息量不多。