通信题:洛谷P15942 [JOI Final 2026] 赌场 / Casino题解

第一次做通信题,感觉十分有趣。

思路

通信题,顾名思义,就是两个程序进行通讯。既然是通讯,那就一定要有人进行干涉或要求程序进行压缩。本题就是有人进行干涉。

一共有 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 式通信的方式吧。

相关推荐
XZHOUMIN2 小时前
【生成pdf格式的报告】
c++·pdf·mfc
初生牛犊不怕苦2 小时前
与AI一起学习《C专家编程》:数组与指针
c语言·学习·算法
elseif1232 小时前
浅谈 C++ 学习
开发语言·c++·学习
Kk.08022 小时前
数据结构|排序算法(二) 冒泡排序
数据结构·算法·排序算法
沛沛rh452 小时前
深入并发编程:从 C++ 到 Rust 的学习笔记
c++·笔记·学习·算法·rust
小CC吃豆子3 小时前
C/C++中 int 的最大最小值
c语言·开发语言·c++
欧米欧3 小时前
C++模板初阶
开发语言·c++
Kk.08023 小时前
数据结构|排序算法(二) 希尔排序
数据结构·算法·排序算法