第一次做通信题,感觉十分有趣。
思路
通信题,顾名思义,就是两个程序进行通讯。既然是通讯,那就一定要有人进行干涉或要求程序进行压缩。本题就是有人进行干涉。
一共有 8×8=648\times 8=648×8=64 个数据,要求传输 515151 个数据。这就很巧了呀!我们从表格的左上角开始 BFS 搜索,将距离左上角为 111 的点、将距离左上角为 222 的点......划分为一组。

那么每一组都会有且仅有一个点被干涉者经过。其中,左上角与右下角是一定会被经过的,这就相当于没有经过(翻转一下就是原来的值了)。64−2×8+1+2=5164-2\times 8+1+2=5164−2×8+1+2=51,也就是说每一组只能有一个空闲的点。
我们考虑对每一组设置一个"警报器"。如果我们知道上一组被干涉者经过的位置,那么这一组就只有两个"嫌疑位置"。这两个位置在这一组中,一定是第奇数个和第偶数个。我们只需将警报器的值设置为所有奇数位的异或和,这样就容易判断出被干涉者污染的位置了。
特别的,如果警报器是"嫌疑位置",可以通过判断所有奇数位的异或和是否等于警报器的值来推断干涉者经过的位置。
代码
洛谷什么时候传数据啊,可以用 IO 式通信的方式吧。