SRM538-div1-2-div2-3-EvenRoute
来源:互联网 发布:latex有windows版么 编辑:程序博客网 时间:2024/05/16 18:04
zz:http://www.strongczq.com/2012/03/srm538-div1-2-div2-3-evenroute.html
题目原文:http://community.topcoder.com/stat?c=problem_statement&pm=11808&rd=14729
题目原文:http://community.topcoder.com/stat?c=problem_statement&pm=11808&rd=14729
题目大意:
直角坐标系上有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"; }}
- SRM538-div1-2-div2-3-EvenRoute
- SRM538-div1-3-SkewedPerspective
- SRM538-div1-2-TurtleSpy
- SRM538-div2-3-SkewedPerspectives
- Spacetsk(SRM545-div1-2-div2-3)
- FavouriteDigits(SRM546-div1-2-div2-3)
- SRM534-div1-1-div2-2-EllysCheckers
- SRM537-div1-1-div2-2-KingXNewCurrency
- SRM539-div1-1-div2-2-Over9000Rocks
- SRM540-div1-1-div2-2-ImportantSequence
- PatrolRoute(SRM542-div1-1-div2-2)
- EllysXors(SRM543-div1-1-div2-2)
- StrIIRec(SRM545-div1-1-div2-2)
- SRM 465(DIV1 DIV2)
- SRM 465(DIV1 DIV2)
- TopCoder 603 div1 & div2
- SRM 466 (DIV1 DIV2 )
- Codeforces Round#339 div1,div2
- 2012C++程序设计实验报告【6.4】
- 重启apache和tomcat
- 实验一
- 第六周实验报告(三)
- BMP图片文件格式
- SRM538-div1-2-div2-3-EvenRoute
- 第六周实验报告2
- 第六周 任务三
- sencha类系统(二)-processors
- Linux命令 之 su、cd、tar
- 第六周实验报告5
- 理想与现实
- 无递归堆栈遍历树
- java——语言基础