回顾下假期之旅吧
有一张无限大的棋盘,你要将马从(0,0)移到(n,m)。
每一步中,如果马在(x,y),你可以将它移动到(x+1,y+2),(x+1,y−2),(x−1,y+2),(x−1,y−2),(x+2,y+1),(x+2,y−1),(x−2,y+1)或(x−2,y−1)。
你需要最小化移动步数。
输入
第一行一个整数t表示数据组数 (1≤t≤1000)。
每组数据一行两个整数n,m (∣n∣,∣m∣≤109)。
输出
每组数据输出一行一个整数表示最小步数。
样例输入:
2
0 4
4 2
样例输出
2
2
bfs+数学

#include<bits/stdc++.h>
using namespace std;#define mp              make_pair
#define sz(x)               int((x).size())
#define fin             freopen("in.txt","r",stdin)
#define fout            freopen("out.txt","w",stdout)
typedef long long ll;
typedef pair<int,int> PII;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int maxn = 1e5 + 5;int a[150][150];
int dx[]={-2,-2,-1,-1,1,1,2,2};
int dy[]={-1,1,-2,2,-2,2,-1,1};
void bfs() {queue<PII> que;que.push(mp(50,50)); a[50][50]=1;while (!que.empty()) {PII now=que.front(),nex; que.pop();for (int i=0;i<8;i++) {nex.first=now.first+dx[i];nex.second=now.second+dy[i];if (!a[nex.first][nex.second] && nex.first>=0 && nex.first<=100 && nex.second>=0&&nex.second<=100){a[nex.first][nex.second]=a[now.first][now.second]+1;que.push(nex);}    }}
}
int main() {// fin;int T;bfs();cin>>T; while (T--) {int n,m,ans=0;cin>>n>>m;if (n<0) n=-n;if (m<0) m=-m;if (n>m) swap(n,m);if (n+m<=40) {ans=a[n+50][m+50]-1;}else {if (n==0) {ans=m/4*2+m%4;}else if (m>=n*2) {ans+=n;m-=2*n;ans+=m%4+m/4*2;}else{ans=((n+m)-(n+m)%6)/3;if ( (n+m)%6==1 ) ans+=1;if ( (n+m)%6==2 ) ans+=2;if ( (n+m)%6==3 ) ans+=1;if ( (n+m)%6==4 ) ans+=2;if ( (n+m)%6==5 ) ans+=3;}}cout<<ans<<endl;}return 0;
}

【upc5020】 Knight相关推荐

  1. NUC1333 Knight Moves【DFS】

    Knight Moves 时间限制: 1000ms 内存限制: 65535KB 问题描述 A friend of you is doing research on the Traveling Knig ...

  2. jzoj 1594: 【USACO】The Chivalrous Cow(骑士牛)( 待加入)

    1594: [USACO] 题目描述 Farmer John traded one of his cows for a cow that Farmer Don called 'The Knight' ...

  3. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  4. 【PAT】PAT总结《搜索、打表、分治、排序算法、队列、栈、堆、Hash》

    打表 打表这个技巧其实我们在素数部分的题已经涉及到了.还是要仔细思考,什么时候应该打表,打表有助于减少后续的计算的时候,我们应该打表, 特别是查询量特别大,即时计算无论多么快都会超时的情况.或者逆向运 ...

  5. C语言发展史(The development of the C language)-BCPL、B与C【转】

    The Development of the C Language* Dennis M. Ritchie Bell Labs/Lucent Technologies Murray Hill, NJ 0 ...

  6. iphone开发每日一练【2011-10-09】

    中秋不只赏月趣! 在香港和法國生活类获选 New & Noteworthy 请大家支持顶下 悠游短信百汇 - 庆祝中秋国庆,发码10个 Toilet Time Pro 中秋节免费. 孤泣电子书 ...

  7. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  8. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  9. 【C#】类——里式转换

    类是由面对对象程序设计中产生的,在面向结构的程序设计例如C语言中是没有类这个概念的!C语言中有传值调用和传址调用的两种方式!在c语言中,主方法调用方法,通过传递参数等完成一些操作,其中比较常用的的数据 ...

最新文章

  1. python能在工程上干嘛-python能干什么?
  2. 自己喜欢的shell终端配置
  3. 学习笔记——使用下划线命名的规则
  4. Eclipe 新建maven web 项目
  5. Linux 应用---make及makefile的编写
  6. java 读 jar外文件_读取Jar包外面的配置文件
  7. php ini 长连接秒数,php使用webSocket实现Echarts长连接自动刷新的解决方案(2):后端服务端代码返回json数据...
  8. Editplus中添加System.out.println()快捷键
  9. idbconnection mysql_基于IDbConnection接口实现修改配置文件切换数据源
  10. memcpy( )函数复制二维数组 memcmp( )函数比较二维数组
  11. vs2015 vc14编译libcurl
  12. python在d盘创建txt文件_python中如何创建一个txt文件
  13. 字符串逆序(三种方法)
  14. 国产GP232RL 串口芯片完美兼容FT232RL 引脚开发资料
  15. docker: Error response from daemon: driver failed programming external connectivity on endpoint mys
  16. 新款 Mac mini(2018) 性能及接口分析
  17. Python之数据爬取数据可视化
  18. Web网站模板-教育培训响应式网站模板(HTML+CSS+JavaScript)
  19. spring boot 获取配置项值:@Value的使用
  20. TCP/IP 协议详解内容总结

热门文章

  1. jsp动作之 getProperty
  2. OpenLayers加载搜狗地图
  3. 邮件Web客户端相关
  4. asp.net FileUpload上传文件
  5. 编写简单的服务和客户端(C++)---ROS学习第10篇
  6. 手机中陀螺仪传感器的四大作用
  7. 趣头条将获得阿里1.71亿美元的可转债,为期三年...
  8. C++11: chrono
  9. 数学图形(2.7)sphere sine wave
  10. HDOJ1016 素数环(DFS)