杭电ACM1030什么思路啊
2个回答
展开全部
临时看的题目,想到一个思路,没实践,仅供参考。
已经知道了起点m和终点n,现在就是要找到一个通用的规律让m尽快到达n。
由图形中可以看出,假设一个起点是处于三角形的顶部,比如1,2,4,5,7,9...
那么它到它下面某一层的点的距离都是一样的,比如1到2和1到4。比如2到10和2到12和2到14。等等
根据这个规律我们可以想到,如果n是在m为顶点的三角形的下面,那么只要找出之间隔了有多少层,问题就解决了。
如果m不是三角形的顶点,我们可以找到m所在的最小的三角形,比如6就是2,8就是4,13就是7......
如何判断是否在某点下面,首先终点n的值我们是知道的,我们可以算出它所在的层数。
那么m和n之间的层数差我们就知道了,我们可以算出顶点的左右边界,如何加以判断。
在的话,规律很好找。不在的话,在左右边界中找到n最近的边界点,算出差值,就是额外的步数,再加上到这一层的步数。
找规律的话,假设顶点f(x)在第x层,那么它到下一层x+1层的右边界就是 f(x)+2*x-1 左边界就是f(x)+2x+1,依次类推,每隔一层顶点到边界的步数就加2。
当然你也可以找通用表达式,这个事情我就不做了
纯手打,可能没表达清楚,可以一起探讨。
已经知道了起点m和终点n,现在就是要找到一个通用的规律让m尽快到达n。
由图形中可以看出,假设一个起点是处于三角形的顶部,比如1,2,4,5,7,9...
那么它到它下面某一层的点的距离都是一样的,比如1到2和1到4。比如2到10和2到12和2到14。等等
根据这个规律我们可以想到,如果n是在m为顶点的三角形的下面,那么只要找出之间隔了有多少层,问题就解决了。
如果m不是三角形的顶点,我们可以找到m所在的最小的三角形,比如6就是2,8就是4,13就是7......
如何判断是否在某点下面,首先终点n的值我们是知道的,我们可以算出它所在的层数。
那么m和n之间的层数差我们就知道了,我们可以算出顶点的左右边界,如何加以判断。
在的话,规律很好找。不在的话,在左右边界中找到n最近的边界点,算出差值,就是额外的步数,再加上到这一层的步数。
找规律的话,假设顶点f(x)在第x层,那么它到下一层x+1层的右边界就是 f(x)+2*x-1 左边界就是f(x)+2x+1,依次类推,每隔一层顶点到边界的步数就加2。
当然你也可以找通用表达式,这个事情我就不做了
纯手打,可能没表达清楚,可以一起探讨。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询