欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1421B.Putting Bricks in the Wall
Putting Bricks in the Wall
题目描述
Pink Floyd 正在对 Roger Waters 开一个玩笑。他们知道他不喜欢墙(walls),他想要自由地行走,所以他们正在阻止他离开他的房间,这个房间可以看作是一个网格。
Roger Waters 有一个 的正方形网格,他想从左上角()走到右下角()。Waters 可以从一个格子移动到与其相邻的任意一个格子(仅限于四个方向),只要他还在网格内。此外,除了格子 和 以外,每个格子里都有一个 或 。
在开始行走前,他会选择 或 中的一个数字,并且只能走到值等于他所选数字的格子。起点 和终点 不受此规则限制,他可以无论选择哪个数字都经过这两个格子。因此,格子 的值用字母 'S' 表示,格子 的值用字母 'F' 表示。
例如,在第一个样例测试中,他可以沿着以下路径只经过值为 的格子,从 走到 :,,,,,,。
乐队的其他成员(Pink Floyd)希望 Waters 无法完成他的行走,因此趁他不注意时,他们会将网格中的至多两个格子的值反转( 变为 , 变为 )。他们担心自己动作不够快,因此请你帮忙选择要反转的格子。注意,你不能反转 和 这两个格子。
可以证明,对于给定的约束条件,总是存在解。
还要注意,Waters 会在乐队更改网格之后才选择他的行走数字,因此无论他选择哪个数字,都不能让他从 走到 。
输入格式
每个测试包含多个测试用例。第一行包含测试用例数 ()。每个测试用例的描述如下。
每个测试用例的第一行包含一个整数 ()。
接下来的 行,每行包含一个二进制网格, 位置用 'S' 表示, 位置用 'F' 表示。
所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,第一行输出一个整数 (),表示反转的格子数。
接下来的 行中,第 行输出你反转的第 个格子的坐标。你不能对同一个格子反转两次。注意,你不能反转 和 这两个格子。
说明/提示
对于第一个测试用例,反转一个格子后,得到如下网格:
S010
0001
1001
111F
由 ChatGPT 4.1 翻译
样例
3
4
S010
0001
1000
111F
3
S10
101
01F
5
S0101
00000
01111
11111
0001F
1
3 4
2
1 2
2 1
0
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |