#CF2109B. 切片求生
切片求生
题目描述
决斗者 Mouf 和 Fouad 进入了一个 的网格竞技场!
Fouad 的怪物起始位置在单元格 ,其中行的编号为 到 ,列的编号为 到 。
Mouf 和 Fouad 将一直决斗,直到网格只剩下一个单元格为止。
每回合流程
每回合中:
- Mouf 先操作:他沿着某条行线或列线将网格切成两部分,然后丢弃不含 Fouad 怪物的那一部分。注意:网格必须至少有 个单元格,否则游戏已经结束。
- 然后,在同一回合中,Fouad 将他的怪物移动到剩余网格中的任意单元格(可以停留在原地)。
Mouf 希望最小化回合数,而 Fouad 希望最大化回合数。如果双方都采取最优策略,这场史诗般的决斗将持续多少回合?
可视化说明
第四个测试用例的游戏阶段可视化可参考原题中的图片(略)。
输入格式
每个测试包含多个测试用例。
第一行包含一个整数 ()——测试用例的数量。
接下来每个测试用例的描述:
每个测试用例的第一行也是唯一一行包含四个整数 、、、(,,)——分别表示网格的行数、列数、怪物的起始行和起始列。
输出格式
对于每个测试用例,输出一个整数——如果双方都最优操作,这场决斗将持续的回合数。
输入输出示例
输入:
8
2 2 1 1
3 3 2 2
2 7 1 4
2 7 2 2
8 9 4 6
9 9 5 5
2 20 2 11
22 99 20 70
输出:
2
4
4
3
6
8
6
10
样例解释
第一个测试用例:
可能的决斗序列如下:
- 第 回合:Mouf 沿着第 行和第 行之间的水平线切割网格,移除下半部分,剩下一个 的网格。
第 回合:Fouad 的怪物在单元格 。 - 第 回合:Mouf 切割 网格,移除一列,将单元格 孤立出来。
决斗在 回合后结束。
第四个测试用例:
可能的决斗序列如下:
- 第 回合:Mouf 沿着第 列和第 列之间的垂直线切割网格,将其分成一个 和一个 的区域,然后移除 的部分。
第 回合:Fouad 将怪物移动到单元格 。 - 从此时开始,决斗就像第一个测试用例一样进行——再用 回合将网格从 缩小到单个 单元格。
总共决斗在 回合后结束。
你可以参考原题中的图片以了解第四个测试用例的图示说明。