本文主要是介绍51Nod-1615-跳跃的杰克,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单组测试数据。
输入数据只包含整数x(-10^9<=x<=10^9)。
输出杰克到达终点所需要的最少的跳跃次数。
2
3
题目大意:从(x,0),每次跳跃跳跃距离+1,问至少条几次。
题解:可以吧问题倒过来:从(0,0)开始,至少跳几次跳到(x,0)。如果能够不调向直接跳到目标点当然很简单,主要是可以多次调整方向。其实画一画图就可以发现:不管怎么调整方向,起始点和目标点是不变的,也就是说明num=1+2+3……+ans>=x;那么思考一下num-x的部分去哪了(num>x)。其实可以发现(num-x)%2==0,这也是判断条件,为什么?以为num-x是多余的部分,既然是多余的部分,那么肯定会偏离x,然而最终停留在x,也就是跑远了还会在回来,画一画图就可以发现了,多余的段一定会被“去"和“回”同时覆盖,所以num-x一定是偶数。注意一定要特判n为负数和0点情况。
总结:当做不出来题时,画一画图也是一种不错的方法,说不定在动态模拟的过程中会发现题目暗藏的性质。
这篇关于51Nod-1615-跳跃的杰克的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!