#P2111. Millenium Leapcow
Millenium Leapcow
描述
奶牛们修改了它们的“跳牛”游戏。现在它们在一片巨大的牧场上进行游戏,牧场上标记了一个行列的网格(),看起来非常像一个棋盘。
以下是它们为新“跳牛”游戏设置棋盘的方式:
- 首先,奶牛们准备了张纸片,每张纸片上写一个从到的整数。
- 其次,“数字牛”将这些纸片按照它选择的顺序放置在的方格中。
其余的每头奶牛会尝试在游戏中最大化自己的得分:
- 首先,它选择一个起始方格,并记录该方格的数字。
- 然后,它像国际象棋中的“马”一样,跳到一个数字更大的方格。如果它跳得特别远,就称为“飞跃”;否则称为“行走”。
- 它会继续以“马”的走法跳到数字更大的方格,直到无法再移动为止。
每访问一个方格,参赛者得分。得分最高的奶牛将赢得比赛。
请帮助奶牛们找出最佳的游戏策略。
输入
- 第行:一个整数,表示棋盘的大小。
- 第行及后续行:这些行包含空格分隔的整数,表示棋盘的内容。前行(从输入文件的第行开始)代表棋盘的第一行;接下来的行代表第二行,依此类推。若,则每行会被分成连续的个数字一组,剩余部分另起一行。每新一行从单独的行开始。
输出
- 第行:一个整数,表示获胜奶牛的得分。
- 第行到第行:每行输出一个整数,表示获胜奶牛从起始方格开始,依次访问的方格数字。如果存在多条得分最高的路径,则输出“最小”的路径(按字典序比较路径中的数字)。
输入样例 1
4
1 3 2 16
4 10 6 7
8 11 5 12
9 13 14 15
输出样例 1
7
2
4
5
9
10
12
13
来源
USACO 2003 美国公开赛