SP13092 PCPC12F - Snakes and Ladders Again
题目描述
蛇梯棋是一种起源于印度的古老棋盘游戏,如今已成为世界经典。这款游戏通常有两名或多名玩家参加,棋盘是一个编号网格。棋盘上有一些“梯子”和“蛇”,它们分别连接着两格特定的方格。游戏的目标是将你的棋子从起点(底部方格)移动到终点(顶部方格),梯子可以帮助你上升,而蛇则可能让你下降到更低的位置。游戏的最初版本寓含道德教化意义,代表着人生旅途中的美德(梯子)和恶习(蛇)。如果你的棋子经过掷骰子后停在一个梯子的底部,就可以顺梯而上;若停在蛇的头部,就必须顺蛇而下。我们称这种具有变化的方格为不稳定方格,否则为稳定方格。
这个游戏不依赖技巧,主要是一个竞赛,因此很受小朋友们的欢迎。
在本题中,你需要计算,从棋盘起点(底部方格)到终点(顶部方格)所需的六面骰子投掷次数的期望值。
**游戏规则**
棋盘是一个 \(N \times M\) 的方格网格,其中方格编号从 1 排到 \(N \times M\)。最后一个方格被称为终点方格。每名玩家开始时的棋子位置为 0(即“1”号格旁的虚拟起始空间,即底部方格),这个位置不会变化。棋盘共有 \(N \times M + 1\) 个位置。每回合投掷骰子,按照点数向前移动棋子。如果到达的位置超过顶部方格,则无需移动。如果棋子落到不稳定方格上,则依据蛇或梯子的指示继续移动,直到到达稳定方格为止。你可以假设任何方格都能最终到达一个稳定方格。如果最后到达的位置是顶部方格,游戏即告胜利。
输入格式
输入包含若干个测试数据。每个测试数据的第一行包含四个整数 \(N, M, S, L\),分别表示棋盘的行数、列数、蛇的数量和梯子的数量。接下来的 \(S\) 行描述每条蛇,每行有两个整数 \(h\) 和 \(t\),表示蛇头的位置和蛇尾的位置(\(0 < t < h \leq N \times M\))。接下来的 \(L\) 行描述每个梯子,每行有两个整数 \(p\) 和 \(q\),表示梯子底部和顶部的位置(\(0 < p < q < N \times M\))。
输入以文件结束符标识。
**注意事项!同一方格可能有多条蛇和/或梯子,需按输入中最后出现的为准。**
输出格式
对于每组测试数据,输出一个数字,表示到达顶部方格所需的骰子投掷次数的期望值。答案保留小数点后三位。
```
样例输入
5 10 3 5
16 6
47 26
49 11
1 38
4 14
9 31
40 42
36 44
样例输出
30.198
```
**本翻译由 AI 自动生成**