题目大意
很明显,这道题就是求 k 步之内到达点 \((a,b)\) ,然后尽量走对角线,求能走对角线的最大值。
做题思路
首先明白一个事实,即一个对角线可以通过增加一步而抵达点不变,如图:
我们可以这样思考这道题,在到达目的地以后,剩余步数如果为双数,则在对角线来回走,最后会到目的地。但如果剩余步数为单数,我们通过上图转化最后依旧到达目的地。
现在考虑什么时候输出-1,即为走完k步后仍无法到达目的地,考虑从原点到达目的地需要的最小步数即为 \(max(a,b)\)
所以排除掉无法到达的情况,我们分类讨论:
-
设 a 和 b 中,a 为较大的一个数,如果
(a-b)%2==0
,那么走对角线我们会先到达 b 的限定高度,考虑优化走到 a 的路线,以 \((5,3)\) 为例,走到3的限定高度后,如果剩余路线为双数,考虑上下跳走,答案 \(k\) 。:
-
依旧设 a 为较大的一数,如果
(a-b)%2==1
,那么我们只好消耗一格走平路以到达目的地,答案 \(k-1\) 。