1193: [HNOI2006]马步距离

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2015  Solved: 914
[Submit][Status][Discuss]

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

//大范围贪心,小范围bfs即可,贪心时横纵距离谁大谁减2,还要横纵距离控制在不小于起点。以前做过一个大范围贪心小范围dp。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
const int MAXN=;
bool vis[][];
int dir[][]={,,,-,,,,-,-,,-,-,-,,-,-};
int dfs(int sx,int sy,int ex,int ey)
{
queue<int>q;
vis[sx][sy]=;
q.push(sx);q.push(sy);q.push();
while(!q.empty()){
int x=q.front();q.pop();
int y=q.front();q.pop();
int cnt=q.front();q.pop();
if(x==ex&&y==ey) return cnt;
for(int i=;i<;i++){
int xx=x+dir[i][],yy=y+dir[i][];
if(xx<||xx>||yy<||yy>) continue;
if(vis[xx][yy]) continue;
vis[xx][yy]=;
q.push(xx);q.push(yy);q.push(cnt+);
}
}
}
int main()
{
int sx,sy,ex,ey;
memset(vis,,sizeof(vis));
scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
ex-=sx;ey-=sy;
sx=sy=;
if(ex<) ex=-ex;
if(ey<) ey=-ey;
ex+=;ey+=;
ll ans=;
while(ex-sx>=||ey-sy>=){
if(ex>=ey){
ex-=;
if(ey>) ey-=;
else ey+=;
}else{
ey-=;
if(ex>) ex-=;
else ex+=;
}
ans++;
}
ans+=dfs(sx,sy,ex,ey);
printf("%lld\n",ans);
return ;
}

bzoj 1193 贪心+bfs的更多相关文章

  1. bzoj 1193 贪心

    如果两点的曼哈顿距离在一定范围内时我们直接暴力搜索就可以得到答案,那么开始贪心的跳,判断两点横纵坐标的差值,差值大的方向条2,小的条1,不断做,直到曼哈顿距离较小时可以暴力求解. 备注:开始想的是确定 ...

  2. BZOJ 1193 [HNOI2006]马步距离:大范围贪心 小范围暴搜

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1193 题意: 给定起点(px,py).终点(sx,sy).(x,y < 100000 ...

  3. BZOJ 1193 搜索+贪心

    预处理出100*100以内的最优解 贪心走日 判断是0*4还是2*4 搞定 //By SiriusRen #include <queue> #include <cstdio> ...

  4. bzoj1193: [HNOI2006]马步距离(贪心+bfs)

    1193: [HNOI2006]马步距离 题目:传送门 题解: 毒瘤题... 模拟赛时的一道题,刚开始以为是一道大难题...一直在拼命找规律 结果.... 还是说正解吧: 暴力的解法肯定是直接bfs, ...

  5. bzoj 1193

    http://www.lydsy.com/JudgeOnline/problem.php?id=1193 大范围贪心,小范围宽搜. 膜拜大神 http://blog.csdn.net/u0129155 ...

  6. #292 (div.2) D.Drazil and Tiles (贪心+bfs)

    Description Drazil created a following problem about putting  ×  tiles into an n × m grid: "The ...

  7. hdu-1728(贪心&&bfs的灵活运用吧)

    链接 [https://vjudge.net/contest/256476#problem/D] 题意 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到 ...

  8. 清北学堂-贪心-bfs

    输入样例: 3 5 10 5 4 10 8 1 10 1 3 1 4 1 5 1 3 2 1 2 5 4 3 4 3 4 5 5 1 1 4 4 6 1 9 4 7 2 9 5 10 5 2 8 8 ...

  9. bzoj 2697 贪心

    就贪心就行了,首先可以看成n个格子,放物品,那么 一个物品假设放3个,放在1,k,n处,那么价值和放在1,n 是一样的,所以一个物品只放两个就行了,价值大的应该尽量放 在两边,那么排序之后模拟就行了 ...

随机推荐

  1. Daily Scrum4 11.6

    昨天的任务按时完成了,但是通过不到两周的时间,我们的工作依旧停留在修改上届学长代码中.今天上课和老师提出了这样的问题,助教在TFS上重新加载了10级学长的代码. 从上届学长代码那里我们发现,他们没有实 ...

  2. 索引超出了数组界限。 在 System.Collections.Generic.Dictionary`2.Resize

    博问:Dictionary 超出了数组界限 异常: Exception type: IndexOutOfRangeException Exception message: 索引超出了数组界限. 在 S ...

  3. Beta 冲刺 (3/7)

    队名:日不落战队 安琪(队长) 过去两天完成了那些任务 上传个人信息. 接下来的任务 建立和上传收藏夹. 还剩下的任务 完善手写涂鸦. 社交模块. 遇到的困难 暂无. 有哪些收获和疑问 收获:okht ...

  4. Gradle入门(3):构建第一个Java项目

    Gradle插件通过引入特定领域的约定和任务来构建你的项目.Java插件是Gradle自身装载的一个插件.Java插件提供的基本功能远比源代码编译和打包多.它为你的项目建立了一个标准的项目布局,并确保 ...

  5. JavaBean 与 EJB 的区别

    JavaBean在一般情况下指的是实体类,在大部分情况下和POJO是同义词,基本构成就是一些字段和与之对应的 setter.getter方法,如果一个JavaBean需要在不同的JVM的进程中进行传递 ...

  6. elicpse

    摘自http://blog.csdn.net/bug_love/article/details/72636505 eclipse error pages打红X的解决方法 我每次建一个Maven项目转为 ...

  7. 微信小程序wx:for和wx:for-item的正确用法

    wx:for="{{list}}"用来循环数组,而list即为数组名wx:for-item="items" 即用来定义一个循环过程中每个元素的变量的 如果是一维 ...

  8. 将博客搬至CSDN和和自己的网站

    将博客同步一份到CSDN去, CSDN博客地址:https://blog.csdn.net/klkfl ---------------- 分割线 2018-10-7 自己用typecho 搭建了一个博 ...

  9. epel [Errno 14] problem making ssl connection

    问题描述: 执行yum命令时,报错[Errno 14] problem making ssl connection 问题分析: ssl证书问题 问题解决: sed -i 's/^#baseurl/ba ...

  10. leetcode动态规划

    http://blog.csdn.net/u012162613/article/details/41428119