p14386 故障机器

p14386 [JOISC 2017] 故障机器

通信题,欲传递一个 \(60\) bit 的信息。\(A\) 可以向 \(B\) 传递一个长为 \(150\) 的二进制串。

其中有至多 \(40\) 个位置会在 \(B\) 收到前被置零,\(A\) 知道哪些位置会被置零,但 \(B\) 不知道。


有两个做法,都非常巧妙。

第一种是,考虑为什么不能直接传递这个数,是因为 \(B\) 无法区分欲发送的 \(0\) 和被置零的位。

那么考虑向 \(B\) 标志一些位本身是否被置零了,比方说,每 \(2\) 位为一组,若组内至少有一个被置零,则整组全发 \(0\)。否则剩下的 \(3\) 种情况按三进制传递信息。\(B\) 收到后跳过全零的组即可。

但是最坏情况下可能恰好占掉 \(40\) 组,剩下 \(35\) 组只能传递约 \(\log_23^{35}\approx 55.4\) bit 的信息。

一个解决方法是两边约好一个随机排列,按这个排列打乱相当于被置零的位置随机了,期望只会占 \(\sim 30\) 组,就对了(

另一个比较巧的方法是,两边约好 \(150\) 个 \(60\) bit 的随机数,扣掉 \(40\) 个之后剩下的 \(110\) 个大概率满秩,在对应数上传递 \(1\) 即可。

posted @ 2026-10-22 21:13  CuteNess  阅读(5)  评论(0)    收藏  举报