Description

求点(xs,ys)走马步到(xp,yp)的最小步数

 

Input

只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys。并且它们的都小于10000000。

Output

含一个整数,表示从点p到点s至少需要经过的马步移动次数。

设起点与终点的坐标差为(x,y)

则问题转化为求向量方程a*(1,2)+b*(2,1)+c*(1,-2)+d*(2,-1)==(x,y)的解满足a,b,c,d为整数且绝对值之和最小。

由对称性可令0≤y≤x

使a*(1,2)+b*(2,1)接近(x,y)并求c,d

使b*(2,1)+d*(2,-1)接近(x,y)并求a,c

枚举即可

#include<cstdio>
inline void mins(int&a,int b){if(a>b)a=b;}
inline void abss(int&a){if(a<)a=-a;}
inline int abs(int a){return a>?a:-a;}
int main(){
int x,y,x2,y2,as,bs,cs,ds,ans=0x7fffffff;
scanf("%d%d%d%d",&x,&y,&x2,&y2);
x-=x2;y-=y2;
abss(x);abss(y);
if(x<y){int c=x;x=y;y=c;}
int as0=(y*-x)/,bs0=(x*-y)/;
for(as=as0-;as<=as0+;as++)
for(bs=bs0-;bs<=bs0+;bs++){
int v1=x-as-bs*,v2=*as+bs-y;
int v3=(v1+v2)/;
cs=v2-v3;ds=v1-v3;
if(as+*bs+cs+*ds==x&&*as+bs-*cs-ds==y)mins(ans,abs(as)+abs(bs)+abs(cs)+abs(ds));
}
bs0=(x+y*)/;
int ds0=(x-y*)/;
for(bs=bs0-;bs<=bs0+;bs++)
for(ds=ds0-;ds<=ds0+;ds++){
int v1=x-bs*-ds*,v2=(y-bs+ds)/;
as=(v1+v2)/;cs=(v1-v2)/;
if(as+*bs+cs+*ds==x&&*as+bs-*cs-ds==y)mins(ans,abs(as)+abs(bs)+abs(cs)+abs(ds));
}
printf("%d",ans);
return ;
}

bzoj1193 马步距离的更多相关文章

  1. BZOJ1193 马步距离 (贪心)

    恶心的题目= = #include <cstdio> #include <cmath> #include <algorithm> ][]={{,,,,},{,,,, ...

  2. bzoj1193: [HNOI2006]马步距离

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

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

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

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

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

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

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

  6. 1193: [HNOI2006]马步距离

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

  7. P2060 [HNOI2006]马步距离

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

  8. [BZOJ1193][HNOI2006]马步距离(贪心+dfs)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1193 分析: 首先小范围可以直接暴力.(其实只要用上题目中的表就行了) 如果范围比较大 ...

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

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

随机推荐

  1. JS之Callback function(回调函数)

    JS中的回调函数: 1.概念: 函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b,那么这个过程就叫回调,即把函数作为参数传入到另一个函数中,这个函数就是所谓的回调函数. 2.举例: ...

  2. XE7 Unit scope names

    今天编译RM报表 7.0 for XE7 ,build设计时包,提示 {$IFDEF JPEG}, JPEG{$ENDIF} 没有找到 JPEG.DCU,这个应该是XE7自带. 后来 在项目选项里,编 ...

  3. python随机数,随机选择……random

    import random from random import random, uniform, randint, randrange, choice, sample, shuffle list = ...

  4. 《Python》 列表、元祖和range

    一.列表: 1.Python基础数据类型之一: 2.其他语言中也有列表的概念,js 数组: 3.可索引,可切片,可加步长: 4.列表可以存储大量的数据: 第一:索引,切片,切片+步长. 第二:增删改查 ...

  5. hibernate多对一和一对多关联

    关联,是类的实例之间的关系,表示有意义和值得关注的连接. 多对一单向关联: 单向多对一:<many-to-one>定义一个持久化类与另一个持久化类的关联这种关联是数据表间的多对一关联,需要 ...

  6. myeclipse10 破解版安装

    安装包请看百度云: step1 step2 step3 step4 step5 step6 安装 svn,可以参考: http://www.cnblogs.com/OnlyCT/p/6061134.h ...

  7. 0117 面向对象OOP有关方法、类、构造方法及权限修饰符的练习

    public class juxing { //编写一个矩形类,将长与宽作为矩形类的属性,在构造方法中将长.宽初始化,定义一个成员方法求此矩形面积 int chang; int kuan; int m ...

  8. zabbix监控系统的配置

    一.zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系 ...

  9. 背景 半透明问题 rgba + filter

    <html style=" background: violet;"><head><meta charset="utf-8"> ...

  10. IOS沙盒机制

    一,ios应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒 1,每个应用程序都有自己的存储空间 2,应用程序不能翻过自己的围墙去访问别的存储空间的内容. 3,应用 ...