1285: [Hnoi2006]马步距离

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 36  Solved: 16
[Submit][Status][Web Board]

Description

在国际象棋和中国象棋中,马的移动规则相同,都是走“日”字,我们将这种移动方式称为马步移动。如右图所示,从标号为0的点出发,可以经过一步马步移动达到标号为1的点,经过两步马步移动达到标号为2的点。
任给平面上的两点p和s,它们的坐标分别为(xp,yp)和(xs,ys),其中,xp,yp,xs,ys均为整数。从(xp,yp)出发经过一步马步移动 可以达到(xp+1,yp+2)、(xp+2,yp+1)、(xp+1,yp-2)、(xp+2,yp-1)、(xp-1,yp+2)、(xp- 2,yp+1)、(xp-1,yp-2)、(xp-2,yp-1)。假设棋盘充分大,并且坐标可以为负数。现在请你求出从点p到点s 至少需要经过多少次马步移动?

Input

只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys。并且它们的都小于10000000。

Output

含一个整数,表示从点p到点s至少需要经过的马步移动次数。

Sample Input

1 2 7 9

Sample Output

5

HINT

Source

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int dx[8]={1,1,-1,-1,2,2,-2,-2};
 4 int dy[8]={2,-2,2,-2,1,-1,1,-1};
 5 int a,b,c,d,x,y,ans;
 6 int px[100000];
 7 int py[100000];
 8 int h[30][30];
 9 bool v[30][30];
10
11 void bfs()
12 {
13     int head,tail,xx,yy,x,y,i;
14     head=0;
15     tail=1;
16     px[1]=0;
17     py[1]=0;
18     memset(h,127,sizeof(h));
19     h[0][0]=0;
20     while (head!=tail)
21     {
22         head++;
23         x=px[head];
24         y=py[head];
25         v[x][y]=false;
26         for (i=0;i<8;i++)
27         {
28             xx=x+dx[i];
29             yy=y+dy[i];
30             if (xx>-10 && xx<20 && yy>-10 && yy<20)
31             if (h[xx][yy]>h[x][y]+1)
32             {
33                 h[xx][yy]=h[x][y]+1;
34                 if (!v[xx][yy])
35                 {
36                     tail++;
37                     px[tail]=xx;
38                     py[tail]=yy;
39                     v[x][y]=true;
40                 }
41             }
42         }
43     }
44 }
45
46 int main()
47 {
48     cin>>a>>b>>c>>d;
49     x=abs(a-c);
50     y=abs(b-d);
51     bfs();
52     while (x>=10 || y>=10)
53     {
54         if (x>y)
55         {
56             x=x-2;
57             y=y-1;
58         }
59         else
60         {
61             x=x-1;
62             y=y-2;
63         }
64         ans++;
65         x=abs(x);
66         y=abs(y);
67     }
68     ans=ans+h[x][y];
69     cout<<ans<<endl;
70     return 0;
71 }

马步距离

转载于:https://www.cnblogs.com/LHR-HY/p/6879026.html

[Hnoi2006]马步距离相关推荐

  1. BZOJ 1193: [HNOI2006]马步距离【贪心+搜索】

    1193: [HNOI2006]马步距离 [题目描述] 传送门 [题解] 大范围贪心,然后小范围BFS,为了答案准确,尽量使这个小范围大,这题100就可以了. 代码如下 #include<que ...

  2. bzoj 1193: [HNOI2006]马步距离(贪心+BFS)

    1193: [HNOI2006]马步距离 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2117  Solved: 953 [Submit][Sta ...

  3. P2060 [HNOI2006]马步距离

    P2060 [HNOI2006]马步距离 数据到百万级别,明显爆搜不行,剪枝也没法剪.先打表.发现小数据内步数比较受位置关系影响,但数据一大就不影响了.大概搜了一个20*20的表把赋值语句打出来.判断 ...

  4. 【BZOJ 1193】 [HNOI2006]马步距离

    1193: [HNOI2006]马步距离 Time Limit: 10 Sec   Memory Limit: 162 MB Submit: 919   Solved: 419 [ Submit][ ...

  5. 1193: [HNOI2006]马步距离

    题目链接 题目大意:求出从点 p 到点 s 至少需要经过多少次马步移动 题解:直接搜会T,贪心会WA--正解是大范围贪心,小范围暴力--有种取长补短的感觉--Orz 我的收获:乱搞出奇迹-- #inc ...

  6. BZOJ1193: [HNOI2006]马步距离

    易水人去,明月如霜. Description 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过 ...

  7. bzoj1193 [HNOI2006]马步距离 构造+枚举

    首先肯定不是直接按xy跳,因为会有几个特殊位置: (0,0)到(1,1) (0,0)到(1,0) (0,0)到(4,4) 正常逼近是那长距离跳2,短距离跳1,但在这几个类似的点上是不行的 首先,一定会 ...

  8. BZOJ 1193 HNOI2006 马步距离

    看了题解的... 因为只想了BFS的思路,但是x,y的范围太大了. BFS一定会爆空间的. 喵了看了看题解,发现还是我too young too simple~ 不水了,总结题目思路: 首先题目x,y ...

  9. bzoj1193:马步距离

    题目描述 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过一步马步移动达到标号为 1 的点,经 ...

最新文章

  1. R构建多项式回归模型(Polynomial Regression)
  2. 使用python抓取百度漂流瓶妹纸照片
  3. java 二叉堆_二叉堆(三)之 Java的实现
  4. 浅析JAVA_HOME,CLASSPATH和PATH的作用
  5. 通用shellcode代码
  6. RxSwift之UI控件UITableView扩展的使用
  7. [Leedcode][JAVA][第5题][最长回文子串][数组][动态规划]
  8. 网站收录工具(php导航自动收录源码)_10步把企业网站优化做到极致,SEO优化的核心知识...
  9. Linux全能终端,【MobaXterm】Windows全能终端神器—MobaXterm
  10. linux下将编译错误输出到一个文本文件
  11. 靠谱前端必上网站大全
  12. visio作图的一系列坑
  13. CV520国产兼容应用及说明
  14. Maven 环境变量配置
  15. html设置鼠标移动变色,table行随鼠标移动变色示例
  16. django接入facebook登陆设置
  17. Contrastive Search Decoding——一种对比搜索解码文本生成算法
  18. 第 7 章 —— 代理模式
  19. Linux I/O编程 实验内容
  20. 整理的strace命令参考文档

热门文章

  1. matlab m文件的编写,Matlab实验报告(四)M文件的编写.doc
  2. java 堆_JAVA学习笔记 07——堆、栈和垃圾回收机制
  3. 单变量和多变量财务预警模型_SPSS数据分析,基于判别分析上市公司财务危机预警分析...
  4. 移动端html5广告的优势,h5手机端开发的优势都有哪些呢
  5. asp连接mysql oledb_provider=microsoft.jet.oledb……数据库连接方法的疑惑?
  6. python捕获异常装饰器_python异常装饰器--比较全的版本了
  7. 0018计算机基础知识,0018 0019计算机应用基础上机试题
  8. 计算机图案填充的两种方法,计算机图形学课件 第9讲 区域填充和字符处理.ppt...
  9. 51单片机外部中断实验 设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管
  10. matlab基础试题,MATLAB基础试题题目及答案,课程2020最新期末考试题库,章节测验答案...