欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF436C.Dungeons and Candies
Dungeons and Candies
题目描述
在加载游戏“地牢与糖果”时,你需要从服务器获取 个关卡的描述。每个描述是一个 的方格矩形地图。地图上的一些格子包含糖果(每个格子最多有一颗糖果)。空单元格用 . 表示,而有糖果的单元格则用英文字母表示。一个关卡中可能包含相同的糖果,这种情况下地图上对应单元格的字母也会相同。

通过网络传输信息时,你希望最小化流量——即传输数据的总大小。关卡可以按任意顺序传输。传输当前关卡 有两种方式:
- 完整传输整个关卡 。这需要通过网络传输 字节。
- 传输关卡 与之前传输过的某个关卡 的差异(如果存在);这个操作需要传输 字节,其中 是 和 地图上不同格子的数量, 是一个常数。注意,计算 时只需要比较关卡 和 对应位置的格子。你不能对地图进行旋转或相对移动等变换。
你的任务是找到传输所有 个关卡的方法,并使流量最小。
输入格式
第一行包含四个整数 。接下来是个关卡的描述。每个关卡由 行描述,每行包含 个字符。每个字符是英文字母或点号 .。请注意字母的大小写是敏感的。
输出格式
第一行输出需要传输的最小字节数。
然后输出 对整数 ,描述传输关卡的方式。数对 表示关卡 需要用方式 传输。如果 等于 ,表示该关卡必须使用第一种方式传输,否则 必须是之前传输过的关卡编号,表示将通过传输关卡 和 的差异来传输关卡 。按传输顺序输出这些数对。关卡按照输入顺序编号为 到 。
如果有多个最优解,可以输出其中任意一个。
样例
2 3 3 2
A.A
...
A.a
..C
X.Y
...
14
1 0
2 1
3 1
1 1 4 1
A
.
B
.
3
1 0
2 0
4 2
3 0
1 3 5 2
ABA
BBB
BBA
BAB
ABB
11
1 0
3 1
2 3
4 2
5 1
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |