hdu 3766 Knight's Trip(并不是bfs)
来源:互联网 发布:淘宝天猫怎么申请 编辑:程序博客网 时间:2024/05/21 10:38
这题是个骗子,以为和1372是一样的,结果人家数字大的不得了
然后就搜了波题解,来自:http://www.cnblogs.com/YY56/p/4954115.html
有一种情况我没有怎么看懂,先拉过来吧
首先,xy的大小排序和转化为都是正数步数不变应该懂吧。y=2*x这种情况直接就是(x+y)/3步。如果y<2*x但是(x+y)%3==0的话,那么我们可以通过控制(1,2),(2,1)两种跳法的次数达到...总数必然是(x+y)/3,然后xy的和对3取余是1的话,我们是不是必然可以在(x+y-1)/3步的时候跳到(x,y-1)这个点,但是不能一步跳到(x,y),回撤两步到(x-4,y-5)这个点,我们可以用三步跳到(x,y),那么就是原先的步数+1。余数为2,就是先跳到(x-1,y-1)这个地方,我们知道(0,0)到(1,1)只需要两步,那么(x-1,y-1)到(x,y)也就是原先步数+2.然后考虑y>2*x,先把(0,1)的情况特殊处理一下。接着我们可以用x步跳到(x,y),那么原问题就转化为(0,0)到(0,y-2*x)。当y-2*x是4的倍数的话我们可以直接(1,2)(-1,2)这个跳可以在(y-2*x)/2步到达。余数为1,就是(0,0)到(0,1)的问题,但是这个需要三步不是最优的,我们后撤两步变为(0,0)到(0,5),我们可以三步达到,那么就是原先的步数加上1就是解。余数为2,我们可以分别跳一次(2,1)(-2,1)到达。余数为3,转化为(0,0)到(0,3)的问题我们可以(-1,2)(1,1)(0,3)三步到达。以上就是全部情况,o(╯□╰)o,在纸上画画,应该所有在这这几类范围内。
y==2*x 这里比较好懂,一直走(+1,+2)就可以了;
y<2*x 这里,我的理解是,先按照(+1,+2)走,走到目标点旁边,这时候有两种情况
假设我们(a,b)是按照(+1,+2)走,距离目标点最近的点
1.目标点是(a+1,b),你会发现,走3步可以到达目标点,但这不是最小的情况!!!往回走一步,也就是回到(a-1,b-2)的点,然后你会发现,只需要2步就可以到达,也就是说,这种情况下,我们只需要 -1+2=1步,即可到达目标点
2.目标点是(a+1,b+1),我们需要2步到达目标点
#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#define N 105using namespace std;int main(){char s[10];int x,y;while(scanf("%s",s)!=EOF){if(s[0]=='E')break;sscanf(s,"%d",&x);//读取字符串中的数值赋给x,//一直wa,后来发现忘了输入不一定是一位数,这个函数是第一次用 scanf("%d",&y);if(x<0)x=-x;if(y<0)y=-y;if(x>y)swap(x,y);int ans;if(y<=2*x){if(x==1&&y==1)ans=2;else if(x==2&&y==2)ans=4;else ans=(x+y)/3+(x+y)%3;}else{ans=x;int c=(y-2*x)%4;ans+=c; ans+=(y-2*x-c)/2;if(y==1&&x==0)ans=3;}printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu 3766 Knight's Trip(并不是bfs)
- hdu 3766 Knight's Trip
- hdoj 3766 Knight's Trip 【】
- 【hdu 1372】 Knight Moves (BFS)
- hdu 1372 Knight Moves (水bfs)
- hdu 1372 Knight Moves(BFS)
- Hdu 1372 Knight Moves(BFS)
- HDU 1372 Knight Moves (BFS)
- hdu 1372 Knight Moves(bfs)
- HDU-#1372 Knight Moves(双向BFS)
- HDU 1372 Knight Moves(BFS)
- HDU 1372 Knight Moves(bfs)
- HDU 1372 Knight Moves(BFS)
- HDU 1372 Knight Moves (BFS)
- hdu 1372 Knight Moves(BFS)
- HDU 1372 Knight Moves(BFS)
- HDU 1372 Knight Moves (BFS)
- HDU-1915-Knight Moves(双向BFS)
- 记TP-Link面试被问到的问题
- 两张表用UNION关键字组合,用zTree显示树
- 丑数
- 这条街MV高清视频,熟悉的旋律很好听
- pycharm远程配置
- hdu 3766 Knight's Trip(并不是bfs)
- js 获取系统当前时间的代码
- Direct3D中,DrawIndexedPrimitive的使用方法
- 三种快速排序以及快速排序的优化
- 【java】元类
- 在SQL server 中创建一个班级学生信息
- mysql索引需要了解的几个注意
- 一年级孩子应该掌握什么
- java开发之shiro