#P2644. 白金莲花池
白金莲花池
题目背景
为了让奶牛们娱乐和锻炼,农夫约翰建造了一个美丽的池塘。这个长方形的池子被分成了 行 列个方格()。一些格子是坚固得令人惊讶的莲花,还有一些格子是岩石,其余的只是美丽、纯净、湛蓝还可能掩藏着宝藏的水。
贝西正在练习芭蕾舞,她站在一朵莲花上,想跳到另一朵莲花上去,她只能从一朵莲花跳到另一朵莲花上,既不能跳到水里,也不能跳到岩石上。
贝西的舞步很像象棋中的马步:每次总是先横向移动一格,再纵向移动两格,或先纵向移动两格,再横向移动一格。最多时,贝西会有八个移动方向可供选择。
约翰一直在观看贝西的芭蕾练习,发现她有时候不能跳到终点,因为中间缺了一些荷叶。于是他想要添加几朵莲花来帮助贝西完成任务,当然莲花不能种在岩石上。
题目描述
但是!约翰在种植莲花的时候发现了一件很有趣的事,有些格子是不能直接种植莲花的,原因是……实不相瞒,无法直接种植莲花的格子的泥土中大部分都是货真价实的铂金,正是它们妨碍了莲花的正常生长!而恰好约翰刚刚学到了铂金的开采方法,也有相关的开采工具,而且他还发现开采铂金后的格子就可以正常地种植莲花,不必担心泥土缺失的问题。(由于贝西迫切地想练习,所以约翰不会开采不打算种莲花的铂金格子)
开采铂金很累,就像是种植莲花一样累,它们都会消耗掉约翰 点体力(也就是说想把铂金格子变成莲花格子需要 点体力),约翰最初有 点体力来种植莲花或开采铂金。
请帮助约翰计算至少需要消耗多少体力才能帮助贝西完成任务,这个数字记作 ,以及有多少种消耗这些体力的方法能帮助贝西完成任务,这个数字记作 ;铂金当然是越多越好,请计算在消耗 点体力帮助贝西完成任务的同时最多能开采多少铂金,这个数字记作 ,以及消耗 点体力开采 块铂金帮助贝西完成任务的方法数,这个数字记作 。
若在 点体力内无法帮助到贝西,那么只输出 -1
。
若在 点体力内无法开采铂金,那么第二行只输出 -1
。
输入格式
第一行:三个用空格分开的整数:, 和
第二行到 行:第 行有 个用空格分开的整数,描述了池塘第 行的状态:
为水, 为莲花, 为岩石, 为贝西所在的起点, 为贝西想去的终点, 为铂金的埋藏地。
输出格式
第一行:用空格分隔开 和 (两个整数,需要最少消耗的体力及方案数;如果无法帮助,输出 -1
。)
第二行:用空格分隔开 和 (两个整数,在消耗最少的前提下开采最多的铂金数及方案数,若在 点体力内无法开采铂金,第二行输出 -1
。)
如果第一行是 -1
,不要输出第二行。
保证输出的数字不会超过 long long
。
4 5 6
0 0 0 1 0 0
2 0 0 2 0 0
0 0 5 0 0 0
3 0 0 0 4 0
0 0 2 0 0 0
2 2
1 1
3 3 2
3 5
4 2
0 1
-1
提示
约翰可以用开采到的铂金小赚一笔,但如果用多余的体力开采铂金而不往上种莲花的话贝西会很生气!