[BZOJ 1193] 马步距离
Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1193
Solution:
能立刻看出贪心算法,但发现在小数据时明显不适用
于是我们采取大数据时贪心,到一定范围时爆搜的算法
(似乎有点像AlphaGo的策略?)
在数据大于10时,我们每次将长边-2,短边-1,如有小于0的情况取绝对值即可(相当于选用对称方案)
用BFS预处理出数据<=10时的情况即可
Code:
#include <bits/stdc++.h>using namespace std; typedef pair<int,int> P;int X1,Y1,X2,Y2,dist[105][105]; int dx[]={-2,-2,-1,-1,1,1,2,2},dy[]={1,-1,2,-2,2,-2,1,-1}; queue<P> que;void init() {memset(dist,0x3f,sizeof(dist));dist[1][1]=0;que.push(P(1,1));while(!que.empty()){P t=que.front();que.pop();for(int i=0;i<8;i++){int fx=t.first+dx[i],fy=t.second+dy[i];if(fx<0 || fx>12 || fy<0 || fy>12) continue;if(dist[fx][fy]>dist[t.first][t.second]+1)dist[fx][fy]=dist[t.first][t.second]+1,que.push(P(fx,fy));}} }int main() {init();scanf("%d%d%d%d",&X1,&Y1,&X2,&Y2);int a=abs(X1-X2),b=abs(Y1-Y2),res=0;while((a>=10) || (b>=10)){if(a>b) swap(a,b);a-=1;b-=2;res++;a=abs(a);b=abs(b);}a++;b++;printf("%d",res+dist[a][b]);return 0; }
Review:
1、如仅有适用于大数据时的贪心算法时,
考虑大数据时贪心,到满足时间复杂度时开始爆搜(很不错的思想)
2、能向各个方向移动的问题
如将数组左上角作为起点,一定要将边界空间留出(有时最优解需要往回走)
ex:此处第0行/列都是合法的,而-1行则可由第3行代替,便可不必考虑
更稳妥的方式是将起点设在中间,如(50,50)
转载于:https://www.cnblogs.com/newera/p/9094650.html
[BZOJ 1193] 马步距离相关推荐
- 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 ...
- 【BZOJ 1193】 [HNOI2006]马步距离
1193: [HNOI2006]马步距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 919 Solved: 419 [ Submit][ ...
- [Hnoi2006]马步距离
1285: [Hnoi2006]马步距离 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 16 [Submit][Status] ...
- P2060 [HNOI2006]马步距离
P2060 [HNOI2006]马步距离 数据到百万级别,明显爆搜不行,剪枝也没法剪.先打表.发现小数据内步数比较受位置关系影响,但数据一大就不影响了.大概搜了一个20*20的表把赋值语句打出来.判断 ...
- 1193: [HNOI2006]马步距离
题目链接 题目大意:求出从点 p 到点 s 至少需要经过多少次马步移动 题解:直接搜会T,贪心会WA--正解是大范围贪心,小范围暴力--有种取长补短的感觉--Orz 我的收获:乱搞出奇迹-- #inc ...
- bzoj1193:马步距离
题目描述 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过一步马步移动达到标号为 1 的点,经 ...
- 【ACWing】2135. 马步距离(配数学证明)
题目地址: https://www.acwing.com/problem/content/description/2137/ 在国际象棋和中国象棋中,马的移动规则相同,都是走"日" ...
- BZOJ1193: [HNOI2006]马步距离
易水人去,明月如霜. Description 在国际象棋和中国象棋中,马的移动规则相同,都是走"日"字,我们将这种移动方式称为马步移动.如图所示, 从标号为 0 的点出发,可以经过 ...
最新文章
- 重磅MIT开源人工智能算法评估和理解对抗Logit配对的稳健性
- 【Collection、泛型】
- 如何创建依赖于某时间段的ABAP视图
- Fiori Elements里的Reference Facet
- js文件中调用另一个js文件:
- Java编程的逻辑 (56) - 文件概述
- t–sql pl–sql_SQL Server性能疑难解答的DBA指南–第2部分–监视实用程序
- 跳转系统设置相关界面的方法
- Struts2入门这一篇就够了 1
- 小博老师精选Java十大CMS ——建站神器
- mysql-5.7.19-winx64_mysql5.7.19 winx64安装配置方法图文教程(win10)
- 中国互联网关于阿里未来预测:这盘大期如何走
- KnockoutJS 实例
- 三菱PLC功能指令详解
- 2022 WTM 女性开发者大会邀你开启心旅程
- 就Linux的一些操作,王里面导入jdk,mysql,tomcat三个包,实现项目在虚拟机上面运行
- 官方固件库V1.4版本介绍
- ps抠图技巧之图层样式
- springmvc接收请求参数(springmvc教程二)
- vue项目中使用地址选择插件v-distpicker,省市区三级联动选择
热门文章
- 小球碰壁反弹加分_js中小球碰壁反弹
- 我们的天空 - BEYOND
- 38211协议学习笔记(2)-帧结构和物理资源
- 58——FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
- hdu 2160 母猪的故事
- python 日期大小比较
- 【python爬虫】js逆向:空气质量在线平台,解决反调试,加密
- 提供凭证不足 无法访问这台计算机,xp系统纯净版连接win7打印机显示“提供的凭证不足”怎么办...
- 嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
- 永大电梯服务器显示连接断开,提供上海永大电梯服务器