BZOJ 1193: [HNOI2006]马步距离【贪心+搜索】
1193: [HNOI2006]马步距离
【题目描述】
传送门
【题解】
大范围贪心,然后小范围BFS,为了答案准确,尽量使这个小范围大,这题100就可以了。
代码如下
#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int f[8][2]={{1,2},{2,1},{-1,2},{-2,1},{1,-2},{2,-1},{-1,-2},{-2,-1}};
int x,y,ans;
bool vis[105][105];
struct xcw{int x,y,t;};
queue<xcw> que;
int ads(int x){return x<0?-x:x;}
bool check(int x,int y){if(x<0||x>100||y<0||y>100)return 0;return !vis[x][y];}
void Work(int x,int y,int t){vis[x][y]=1;que.push((xcw){x,y,t});}
int BFS(int x,int y){que.push((xcw){x,y,0});vis[x][y]=1;while(!que.empty()){x=que.front().x,y=que.front().y;int t=que.front().t;que.pop();for(int i=0;i<8;i++)if(check(x+f[i][0],y+f[i][1])){Work(x+f[i][0],y+f[i][1],t+1);if(x+f[i][0]==50&&y+f[i][1]==50) return t+1;}}
}
int main(){int x1,y1;scanf("%d%d%d%d",&x,&y,&x1,&y1);x=ads(x-x1);y=ads(y-y1);while(x+y>=50){if(x<y) swap(x,y);if(x-4>=2*y) x-=4;else x-=4,y-=2;ans+=2;}x+=50,y+=50;if(x<y) swap(x,y);printf("%d\n",BFS(x,y)+ans);return 0;
}
转载于:https://www.cnblogs.com/XSamsara/p/9190119.html
BZOJ 1193: [HNOI2006]马步距离【贪心+搜索】相关推荐
- bzoj 1193: [HNOI2006]马步距离(贪心+BFS)
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2117 Solved: 953 [Submit][Sta ...
- BZOJ 1193 HNOI2006 马步距离
看了题解的... 因为只想了BFS的思路,但是x,y的范围太大了. BFS一定会爆空间的. 喵了看了看题解,发现还是我too young too simple~ 不水了,总结题目思路: 首先题目x,y ...
- 1193: [HNOI2006]马步距离
题目链接 题目大意:求出从点 p 到点 s 至少需要经过多少次马步移动 题解:直接搜会T,贪心会WA--正解是大范围贪心,小范围暴力--有种取长补短的感觉--Orz 我的收获:乱搞出奇迹-- #inc ...
- 【BZOJ 1193】 [HNOI2006]马步距离
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 919 Solved: 419 [ Submit][ ...
- P2060 [HNOI2006]马步距离
P2060 [HNOI2006]马步距离 数据到百万级别,明显爆搜不行,剪枝也没法剪.先打表.发现小数据内步数比较受位置关系影响,但数据一大就不影响了.大概搜了一个20*20的表把赋值语句打出来.判断 ...
- [Hnoi2006]马步距离
1285: [Hnoi2006]马步距离 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 16 [Submit][Status] ...
- BZOJ1193: [HNOI2006]马步距离
易水人去,明月如霜. Description 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过 ...
- bzoj1193 [HNOI2006]马步距离 构造+枚举
首先肯定不是直接按xy跳,因为会有几个特殊位置: (0,0)到(1,1) (0,0)到(1,0) (0,0)到(4,4) 正常逼近是那长距离跳2,短距离跳1,但在这几个类似的点上是不行的 首先,一定会 ...
- [BZOJ 1193] 马步距离
Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1193 Solution: 能立刻看出贪心算法,但发现在小数据时明显不适用 于是我们采取大 ...
最新文章
- Kotlin for 循环使用
- 怎样在bug管理上节省时间
- VScode 无法创建文件或者无法保存文件
- 转:FMS 3.5之Hello World!
- HTML5:一些部件
- xmldocument如何创建一个不带结尾的节点_LDF文件是个啥?如何创建一个LDF文件
- idea配置mysql失败_IDEA配置数据库连接失败的问题
- 洛谷试炼场一句话题解
- iOS平台上aa(见缝插针)游戏的简易实现
- linux下TF卡测试寿命的测试程序编写
- 【Python】WARNING: The script xx.exe is installed in xxdirectory which is not on PATH.
- mysql cbrt函数_Hive FUNCTIONS函数
- Boston Dynamics实验:机器狗对垒真小狗
- 【Web】1326- 深入浅出 Web Audio API
- QQ、YY与webRTC回声消除效果对比分析与展望
- IE的浏览器模式和文档模式
- 超低功耗研发-STM32L151C8T6芯片(三)RTC自动唤醒机制
- 怎么将.tex文件转换成pdf
- Java反射09 : 参数Parameter学习示例
- 正确理解闭包及闭包使用场景
热门文章
- 计算机组成原理中dubs是什么意思,计算机组成原理》课程设计报告.docx
- 服务器装哪个操作系统好,服务器装哪个操作系统好
- flask 配置静态文件模板文件
- BiquadFilterNode
- TensorFlow tf.keras.backend.ctc_batch_cost
- Pandas将列表(List)转换为数据框(Dataframe)
- ifconfig没有ip地址_虚拟机创建后该如何获取IP地址并访问互联网实用教程
- Windows学习总结(5)——【IIS建站】Windows10怎么打开站点服务?
- php小小通讯录,2009年小学信息技术优质课一等奖教学设计四上《小小通讯录》...
- 小学计算机课评价方案,小学信息技术课堂评价方法的研究