P2060 马步距离(洛谷)
我们无论遇到什么困难,都不要拖,微笑着面对他,战胜拖延的最好方法就是面对拖延。
今天又拖延了……
早晨听完老师讲课,本想做一道题练练手的,结果因为懒,瘫了一上午。最后在固定的刷题时间去面对了这道题,然后就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 马步距离(洛谷)的更多相关文章
- P2060 [HNOI2006]马步距离
P2060 [HNOI2006]马步距离 数据到百万级别,明显爆搜不行,剪枝也没法剪.先打表.发现小数据内步数比较受位置关系影响,但数据一大就不影响了.大概搜了一个20*20的表把赋值语句打出来.判断 ...
- bzoj1193: [HNOI2006]马步距离
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MB Description 在国际象棋和中国象棋中,马的移动规则相同,都是走&q ...
- 1193: [HNOI2006]马步距离
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 915[Submit][Statu ...
- [BZOJ1193][HNOI2006]马步距离 大范围贪心小范围爆搜
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1988 Solved: 905[Submit][Statu ...
- 【bzoj1193】[HNOI2006]马步距离
[HNOI2006]马步距离 Description Input 只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys.并且它们的都小于10000000. Output 含一个整数,表示从 ...
- bzoj1193: [HNOI2006]马步距离(贪心+bfs)
1193: [HNOI2006]马步距离 题目:传送门 题解: 毒瘤题... 模拟赛时的一道题,刚开始以为是一道大难题...一直在拼命找规律 结果.... 还是说正解吧: 暴力的解法肯定是直接bfs, ...
- bzoj1193 马步距离
Description 求点(xs,ys)走马步到(xp,yp)的最小步数 Input 只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys.并且它们的都小于10000000. Out ...
- 「Luogu P2060 [HNOI2006]马步距离」
一道神奇的BFS 前置芝士 BFS(DFS):这次真的不是我懒,我也不知道DFS怎么写. STL中的set或者map. 具体做法 数据范围非常大,直接BFS肯定是一片黑色(指TLE,MLE),直接贪心 ...
- BZOJ 1193 [HNOI2006]马步距离:大范围贪心 小范围暴搜
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1193 题意: 给定起点(px,py).终点(sx,sy).(x,y < 100000 ...
随机推荐
- jenkins构建报错 Error fetching remote repo 'origin'
ERROR: Error fetching remote repo 'origin' Finished: FAILURE // 原因如下 原因一:可能是配置的git分支的权限问题,检查一下配置里面的源 ...
- java创建图片的缩略图
//java创建图片的缩略图private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int qua ...
- JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去…
JavaScript 格式化数字.金额.千分位.保留几位小数.舍入舍去… 类库推荐 1. Numeral.js 一个用于格式化和操作数字的JavaScript库.数字可以被格式化为货币,百分比,时间, ...
- 计算机网络之DNS协议
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工 ...
- 深入理解JVM(③)虚拟机的类加载过程
前言 上一篇我们介绍到一个类的生命周期大概分7个阶段:加载.验证.准备.解析.初始化.使用.卸载.并且也介绍了类的加载时机,下面我们将介绍一下虚拟机中类的加载的全过程.主要是类生命周期的,加载.验证. ...
- 实战技巧,Vue原来还可以这样写
hookEvent,原来可以这样监听组件生命周期 1. 内部监听生命周期函数 <template> <div class="echarts"></di ...
- .NET 开源工作流: Slickflow流程引擎高级开发(七)--消息队列(RabbitMQ)的集成使用
前言:工作流流程过程中,除了正常的人工审批类型的节点外,事件类型的节点处理也尤为重要.比如比较常见的事件类型的节点有:Timer/Message/Signal等.本文重点阐述消息类型的节点处理,以及实 ...
- Halcon斑点分析涉及算子及其高阶运用
涉及算子 获取图像 使用ROI 对齐ROI或图像 校正图像 基础内容这里不再重述 预处理图像(过滤) 基础: mean_image(平均平滑过滤),gauss_filter(高斯滤波),binomia ...
- Spring Cloud系列教程第九篇-Eureka自我保护机制
Spring Cloud系列教程第九篇-Eureka自我保护机制 本文主要内容: 1:自我保护介绍 2:导致原因分析 3:怎么禁止自我保护 本文是由凯哥(凯哥Java:kagejava)发布的< ...
- 每日一题 - 剑指 Offer 46. 把数字翻译成字符串
题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 难易程度:中等 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ...