摘要: Description在一个8行9列的国际象棋棋盘上,有一名骑士在追杀对方的国王。该骑士每秒跨越一个2*3的区域,如下图所示。而对方的国王慌忙落逃,他先沿着右下斜线方向一直跑,遇到边界以后会沿着光线反射方向继续跑(遇到死角则原路返回),他每秒只跑一格。给出骑士和国王的初始位置,求最快在多少秒的时候骑士能追杀掉对方的国王。骑士和国王每一秒都必须要有行动,而不能原地等待。Input有多组测试数据。对于每组测试数据,输入只有一行:nx,ny,kx,ky,前2个表示骑士的初始坐标,后2个表示国王的初始坐标,以左上角的格子为(0,0),向右为x轴正方向,向下为y轴正方向。(0<=nx,kx< 阅读全文
posted @ 2012-07-03 18:41 BeatLJ 阅读(216) 评论(1) 推荐(0) 编辑
摘要: 求一棵树中2个点的最近公共祖先。我的做法:用并查集求出每个结点的深度,然后递归求最近公共祖先。View Code 1 #include <stdio.h> 2 #define N 10001 3 int fa[N],p[N],d[N],n; 4 void make_set() 5 { 6 for(int i=1;i<=n;i++) 7 { 8 p[i]=i; 9 d[i]=0;10 }11 }12 int find_set(int i)13 {14 int pi=p[i];15 if(pi!=i) p[i]=find_set(p[i]);16 if(p... 阅读全文
posted @ 2012-07-03 18:29 BeatLJ 阅读(235) 评论(0) 推荐(0) 编辑