#P16584. [GKS 2016 #C] Monster Path
[GKS 2016 #C] Monster Path
题目描述
Codejamom 是一款手机游戏,玩家(怪物训练师)在现实世界中走动捕捉怪物。你有一部电池续航时间较短的旧智能手机,因此需要仔细选择路径,以尽可能多地捕捉怪物。
假设 Codejamom 的世界是一个 行 列的矩形网格。行从上到下编号,从 开始;列从左到右编号,从 开始。你从第 行、第 列的格子出发。你总共会走 个单位步数;每一步必须移动到与你当前格子共享一条边(不仅仅是角)的相邻格子。
每当你步入一个尚未捕捉过怪物的格子时,如果该格子有“怪物吸引器”,你将以概率 捕捉到该格子中的怪物,否则以概率 捕捉。如果成功捕捉到了该格子中的怪物,则怪物会消失,之后即使再次访问该格子也无法再捕捉任何怪物。如果未能捕捉到,你可以在以后再次访问该格子时继续尝试捕捉。起始格子是特殊的:在迈出第一步之前,你在那里没有任何捕捉怪物的机会。
如果你在行动之前就规划好最优路径,那么你所能捕捉到的怪物期望数最大是多少?
电池只能支持有限的步数,所以请尽快作答!
输入格式
输入的第一行给出测试用例的数量 。接下来有 个测试用例。
每个测试用例的第一行包含五个整数:、、、 和 。 和 分别是网格的行数和列数; 和 是你的起始位置的行号和列号; 是允许你走的步数。
下一行包含两个小数 和 ,其中 是带有怪物吸引器的格子中遇到怪物的概率, 是没有怪物吸引器的格子中遇到怪物的概率。 和 均精确到小数点后四位。
接下来的 行,每行包含 个由空格分隔的字符;第 行的第 个字符表示第 行第 列的格子。每个字符要么是 .(表示该格子没有吸引器),要么是 A(表示该格子有吸引器)。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: y,其中 是测试用例编号(从 开始), 是在给定步数内玩家所能捕捉到的最大期望怪物数。
如果 与正确答案的绝对误差或相对误差在 以内,则认为正确。
2
4 4 0 0 5
0.8000 0.2000
. . . .
. . . .
. . A .
. A . A
10 10 9 1 4
0.6121 0.1000
. . A A . . . . . .
A . . . . . . . . .
. . A . . . . A . .
. . . A A . . . . .
. A A A . . . . . A
A . A A . . . . A .
. A . . . . . A . .
. . . . A A . . . .
. . A . . . A . . A
. . . . A . . A . .
Case #1: 1.6000000
Case #2: 1.0495336
提示
在样例 #1 中,最优路径之一为 。在这条路径上,你捕捉到怪物的期望数为 。请记住,迈出第一步之前没有机会捕捉怪物,因此计算中只有五个概率,而不是六个。
在样例 #2 中,最优路径之一为 。在这条路径上,你捕捉到怪物的期望数为 。由于我们接受与正确答案()的绝对或相对误差在 以内的结果,因此 是可接受的。
限制条件
。
。
。
。
小数据集(测试集 1 – 可见)
。
。
。
大数据集(测试集 2 – 隐藏)
。
。
。
翻译由 DeepSeek V4 Pro 完成