我们无论遇到什么困难,都不要拖,微笑着面对他,战胜拖延的最好方法就是面对拖延。

今天又拖延了……

早晨听完老师讲课,本想做一道题练练手的,结果因为懒,瘫了一上午。最后在固定的刷题时间去面对了这道题,然后就A了

额,这个题的思路是很好想的,虽然数据大了这么亿点点,但不难看出是个广搜吧(根本不是)。

广搜根本不可能啊,数据太大了。但是我们可以发现什么东西,这个棋盘上没有障碍!

谁不知道平时广搜是因为不知道往哪里走才都试一遍的。但这个知道往哪走啊!

都知道怎么走了还广搜个毛线,冲过去就好了,但在最后几步,还是要绕一下的,因为范围实在太小,直接打表不香吗……

所以这个题的标准(简单快捷)的解法就是:贪心+打表。(话说这个题为什么标签有搜索……,可能就是为了骗人。也可能真的有大佬能做出来,但我不会)

总之这个题是真的不错,我觉得可以锻炼我们的思维(因为我懒所以写的更短了)

上代码吧:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
long long cjx,cjy,shu;
long long sz[6][6]=
{
{0,3,2,3,2},
{3,2,1,2,3},
{2,1,4,3,2},
{3,2,3,2,3},
{2,3,2,3,4},
};//这样看着顺眼。也有利于后期查错。而且4个方向的数都一样,就是把坐标翻转一下的事。
long long px,py,sx,sy;//4个变量,多个xy我就会乱起名,还是用题目名称靠谱一些。
int main()
{
cin>>px>>py>>sx>>sy;
cjx=abs(sx-px);//算他们之间的距离。
cjy=abs(sy-py);
while(true)
{
if(cjx<=4&&cjy<=4)//可以打表了。
{
cout<<shu+sz[cjx][cjy]<<endl;//中间可能把x和y交换了,但这一点关系都没有,仔细想想就知道了(如果把走过来的路程中所有走法全部反转,x和y就会交换,但移动次数不变)
return 0;
}
if(cjx<cjy)//马那个奇怪的走法,一边走2格一边走1格,向哪边走2格呢?当然是距离目标地点远的那一边。
{
swap(cjx,cjy);
}
cjx-=2;
cjy-=1;
if(cjx<0)//都说了,反转一下的事,再判断在哪个方向多麻烦。
{
cjx=0-cjx;
}else if(cjy<0)
{
cjy=0-cjy;
}
shu++;
}
return 0;
}

这个代码真的短,道理也很简单,我觉得最难的地方就是看见题目能放弃广搜(看看数据就放弃了),去往这个方面想。只要知道思路,写代码还是很简单的。

P2060 马步距离(洛谷)的更多相关文章

  1. P2060 [HNOI2006]马步距离

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

  2. bzoj1193: [HNOI2006]马步距离

    1193: [HNOI2006]马步距离 Time Limit: 10 Sec  Memory Limit: 162 MB Description 在国际象棋和中国象棋中,马的移动规则相同,都是走&q ...

  3. 1193: [HNOI2006]马步距离

    1193: [HNOI2006]马步距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 915[Submit][Statu ...

  4. [BZOJ1193][HNOI2006]马步距离 大范围贪心小范围爆搜

    1193: [HNOI2006]马步距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1988  Solved: 905[Submit][Statu ...

  5. 【bzoj1193】[HNOI2006]马步距离

    [HNOI2006]马步距离 Description Input 只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys.并且它们的都小于10000000. Output 含一个整数,表示从 ...

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

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

  7. bzoj1193 马步距离

    Description 求点(xs,ys)走马步到(xp,yp)的最小步数   Input 只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys.并且它们的都小于10000000. Out ...

  8. 「Luogu P2060 [HNOI2006]马步距离」

    一道神奇的BFS 前置芝士 BFS(DFS):这次真的不是我懒,我也不知道DFS怎么写. STL中的set或者map. 具体做法 数据范围非常大,直接BFS肯定是一片黑色(指TLE,MLE),直接贪心 ...

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

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

随机推荐

  1. 剑指 Offer 09. 用两个栈实现队列

    剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...

  2. Beta冲刺<10/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第十天(05.28) 作业正文 如下 其他参考文献 ... B ...

  3. 手写React的Fiber架构,深入理解其原理

    熟悉React的朋友都知道,React支持jsx语法,我们可以直接将HTML代码写到JS中间,然后渲染到页面上,我们写的HTML如果有更新的话,React还有虚拟DOM的对比,只更新变化的部分,而不重 ...

  4. 策略模式、策略模式与Spring的碰撞

    策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式. 实际案例 我工作第三年的时候,重构旅游路线的机票查询模块,旅游路线分为四种情况: 如果A地-B地往返都 ...

  5. Tornado的使用

    Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快.得利于其非阻塞的方式和对 epoll 的运用 基本操作 torn ...

  6. 要想数组用的 6,怎能不懂 java.util.Arrays

    java.util.Arrays 类就是为数组而生的专用工具类,基本上常见的对数组的操作,Arrays 类都考虑到了,这让我由衷地觉得,是时候给该类的作者 Josh Bloch.Neal Gafter ...

  7. Azure Data Box

    一,引言 最近博主又要面临考试了,随笔又再次缓慢更新,说起考试,之前在微软的 ms learn的课程上有接触到一个叫 Azure Data Box的,刚好今天也花了一个多小时看了一下相关文档,下面就正 ...

  8. 多种CSS变量技术 带入进入老司机行业

    CSS 变量技术 具体用法 使用 -- 声明变量,使用 var() 函数获取变量. :root{ --header-height: 70px; } body { --color: white; } . ...

  9. html中为何经常使用<i>标签来作为小图标呢?

    很多网站都是习惯使用<i></i>来代表小图标?而实际上用 <i> 元素做图标在语义上是不正确的(虽然看起来像 icon 的缩写),那么用<i>表示小i ...

  10. 「疫期集训day3」要塞

    战友们正讨论着他们曾经参加过凡尔登战役的父亲...在黎明前我们必须誓死坚守----法乌克斯要塞中弹尽粮绝的法军士兵 什么!今天又考状压和tarjan! 达成成就:连续两天复习数论和二分图 康乐康,这次 ...