bzoj1193 [HNOI2006]马步距离 构造+枚举
首先肯定不是直接按xy跳,因为会有几个特殊位置:
(0,0)到(1,1)
(0,0)到(1,0)
(0,0)到(4,4)
正常逼近是那长距离跳2,短距离跳1,但在这几个类似的点上是不行的
首先,一定会有一段两个坐标都逼近的一部分,而且还很多
都逼近的话,一定是当前位置最优解,但只逼近的话,当前位置不一定能落在目标点上
通过手玩可以发现,这种情况,离目标点的距离已经非常近,在考虑接下来怎么走,实际上也可以考虑成从哪里出发,能正好通过逼近到达目标点,实际上这两个问题是等价的
所以就相当于把逼近之外比较巧妙的部分用枚举法处理完,直接逼近判断就可以了
码:
#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
#include<cstring>
using namespace std;
queue<int>qxx,qyy,ff;
int xx,yy,i,j,xxxx,yyyy,ans=199999999,lxx,lyy,lff;
bool b[404][404];
int check(int xx,int yy)
{int lin=0;
if(xx<yy)swap(xx,yy);
if(xx>=yy*2)
{lin+=yy;xx-=2*yy;yy=0;if(xx%4==0)return lin+xx/2;else return 199999999;
}else
{int o=xx-yy;lin+=o;//走到相同 yy-=o;xx-=2*o;//一起走 if(xx%3==0)return xx/3*2+lin;else return 199999999;
}
}
int main()
{scanf("%d%d%d%d",&xx,&yy,&xxxx,&yyyy);qxx.push(0);qyy.push(0);ff.push(0);while(!ff.empty())
{lxx=qxx.front();lyy=qyy.front();lff=ff.front();qxx.pop(),qyy.pop(),ff.pop();if(lxx<-100||lxx>100||lyy<-100||lyy>100)continue;ans=min(lff+check(abs(lxx+xx-xxxx),abs(lyy+yy-yyyy)),ans);if(!b[lxx+2+120][lyy+1+120]){b[lxx+2+120][lyy+1+120]=1;ff.push(lff+1);qxx.push(lxx+2);qyy.push(lyy+1);}if(!b[lxx+2+120][lyy-1+120]){b[lxx+2+120][lyy-1+120]=1;ff.push(lff+1);qxx.push(lxx+2);qyy.push(lyy-1);}if(!b[lxx-2+120][lyy+1+120]){b[lxx-2+120][lyy+1+120]=1;ff.push(lff+1);qxx.push(lxx-2);qyy.push(lyy+1);}if(!b[lxx-2+120][lyy-1+120]){b[lxx-2+120][lyy-1+120]=1;ff.push(lff+1);qxx.push(lxx-2);qyy.push(lyy-1);}if(!b[lxx+1+120][lyy+2+120]){b[lxx+1+120][lyy+2+120]=1;ff.push(lff+1);qxx.push(lxx+1);qyy.push(lyy+2);}if(!b[lxx+1+120][lyy-2+120]){b[lxx+1+120][lyy-2+120]=1;ff.push(lff+1);qxx.push(lxx+1);qyy.push(lyy-2);}if(!b[lxx-1+120][lyy+2+120]){b[lxx-1+120][lyy+2+120]=1;ff.push(lff+1);qxx.push(lxx-1);qyy.push(lyy+2);}if(!b[lxx-1+120][lyy-2+120]){b[lxx-1+120][lyy-2+120]=1;ff.push(lff+1);qxx.push(lxx-1);qyy.push(lyy-2);}
}
printf("%d",ans);
}
bzoj1193 [HNOI2006]马步距离 构造+枚举相关推荐
- BZOJ1193: [HNOI2006]马步距离
易水人去,明月如霜. Description 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过 ...
- [Hnoi2006]马步距离
1285: [Hnoi2006]马步距离 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 16 [Submit][Status] ...
- BZOJ 1193: [HNOI2006]马步距离【贪心+搜索】
1193: [HNOI2006]马步距离 [题目描述] 传送门 [题解] 大范围贪心,然后小范围BFS,为了答案准确,尽量使这个小范围大,这题100就可以了. 代码如下 #include<que ...
- bzoj 1193: [HNOI2006]马步距离(贪心+BFS)
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2117 Solved: 953 [Submit][Sta ...
- P2060 [HNOI2006]马步距离
P2060 [HNOI2006]马步距离 数据到百万级别,明显爆搜不行,剪枝也没法剪.先打表.发现小数据内步数比较受位置关系影响,但数据一大就不影响了.大概搜了一个20*20的表把赋值语句打出来.判断 ...
- 【BZOJ 1193】 [HNOI2006]马步距离
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 919 Solved: 419 [ Submit][ ...
- bzoj1193:马步距离
题目描述 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过一步马步移动达到标号为 1 的点,经 ...
- 1193: [HNOI2006]马步距离
题目链接 题目大意:求出从点 p 到点 s 至少需要经过多少次马步移动 题解:直接搜会T,贪心会WA--正解是大范围贪心,小范围暴力--有种取长补短的感觉--Orz 我的收获:乱搞出奇迹-- #inc ...
- BZOJ 1193 HNOI2006 马步距离
看了题解的... 因为只想了BFS的思路,但是x,y的范围太大了. BFS一定会爆空间的. 喵了看了看题解,发现还是我too young too simple~ 不水了,总结题目思路: 首先题目x,y ...
最新文章
- 简单的特征值梯度剪枝,CPU和ARM上带来4-5倍的训练加速 | ECCV 2020
- wxml 点击图片下载_云存储之上传图片和展示图片(小程序云开发)
- 汇编语言--jcxz指令
- LOJ P1155 双栈排序 二分图染色 图论
- java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...
- 自然语言处理顶会 ACL 2018 参会见闻
- QQ,MSN,SKYPE等在线状态代码
- php gd support not found.,安装php71w-gd并获取错误GD库扩展不适用于此PHP安装
- python数据存储系列教程——xls文件的读写、追加(xlwt、xlwt、xlutils)
- clickhouse条件函数
- K-Means优缺点
- CV+Deep Learning——网络架构Pytorch复现系列——classification(一:LeNet5,VGG,AlexNet,ResNet)
- java分享微博_Connect/sharing - 微博API
- 飘云阁(PYG)番茄插件流氓弹窗清除方法
- ArcGIS分享: 地图分幅及编号
- ibm 的java实现_IBM Java Toolbox for 实现IBM i 消息通信
- 数据库number 对应java_数据库中的number型表示什么
- 360插件化踩坑记录(二),RePlugin安装、启动插件无反应
- springboot Filed to bind properties under
- rust新版组队指令_腐蚀rust新版服务器指令大全 腐蚀指令一览
热门文章
- 华为鸿蒙怎么体验,华为鸿蒙 HarmonyOS 2.0 发布,教你如何升级体验
- java 新特性之 stream 流
- Android笔记 解析xml文件demo
- 2021-10-11关于Ubuntu安装搜狗输入法
- 记录一次conda环境报错的解决ImportError:: Library not loaded: @rpath/libffi.7.dylib
- Ubuntu18.04下安装OpenCV依赖包出现ibjasper-dev无法安装的问题
- Octave教程(一)
- chrome鼠标手势_Chrome插件推荐——第一弹
- android 6.0 点亮屏幕,android6.0 otg连接设备 点亮屏幕(案例)
- rnn神经网络模型_ICLR 2019 | 与胶囊网络异曲同工:Bengio等提出四元数循环神经网络...