关闭

SRM538-div1-2-div2-3-EvenRoute

164人阅读 评论(0) 收藏 举报

题目大意:
     直角坐标系上有N个点,坐标用int[] x和 int[]y表示。现在从原点(0,0)出发,每步只能往上下左右四个方向中的一个移动距离1。要求遍历所有的这N个点,并且最终停止在某一个点上。那么,给定一个取值为0或1的数wantedParity,问有没有可能移动的步数奇偶性与wantedParity相同。
     数据规模:N取值为[1,50], 每个坐标值取值为[-1000000, 1000000]。
     

思路:
     这道题具有一定的迷惑性,其实仔细想想会发现,最终步数的奇偶性只与最终停留的点有关。
     为什么会这样?首先需要证明,从原点触发到某个点(x,y),无论路线如何,步数的奇偶性总是和|x|+|y|相同。
     证明:到达(x,y)点是,无论如何移动,x轴移动的步数必然是2*kx+|x|, y轴移动的步数必然是2*ky+|y|,所以总移动步数为2*(kx+ky)+|x|+|y|,奇偶性与|x|+|y|相同。
     根据该规律,我们只需要决定最后停留在那个点上就可以确定移动步数的奇偶性。因此遍历各个点的|x|+|y|值,只要存在一个奇偶性与wantedParity相同,答案就是肯定。

Java代码:

public class EvenRoute
{
      public String isItPossible(int[] x, int[] y, int wantedParity)
      {
            for(int i = 0; i < x.length; ++i){
                  if((Math.abs(x[i]) + Math.abs(y[i])) % 2 == wantedParity % 2){
                        return "CAN";
                  }
            }
            return "CANNOT";
      }
}


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25968次
    • 积分:733
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:35篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论