hdu4740 不错的简单搜索
题意:
给你一个n*n的图,给你驴和老虎的初始坐标和方向,已知他们的速度相同,他们走动的时候都是走直线,如果不能走,驴往右拐,老虎往左拐,如果拐了一次还走不了就原地不动,问他们的最早相遇位置。
思路:
直接模拟就行了,我用的是搜索模拟的,不搜索也一样,把他们到达每个格子的时间都记录下来,如果相等或者是A比B大,但是B已经到达终点了,就算相遇,记录的时候记得是要最早的那次相遇就行了。
#include<stdio.h>
#include<string.h> #define N 1100 + 5
int map_A[N][N] ,map_B[N][N];
int x1 ,y1 ,x2 ,y2 ,n;
int dir[4][2] = {0 ,1 ,1 ,0 ,0 ,-1 ,-1 ,0};
bool ok_A(int x ,int y)
{
if(x <= n && x >= 1 && y <= n && y >= 1 && !map_A[x][y])
{
x1 = x ,y1 = y;
return 1;
}
return 0;
} bool ok_B(int x ,int y)
{
if(x <= n && x >= 1 && y <= n && y >= 1 && !map_B[x][y])
{
x2 = x ,y2 = y;
return 1;
}
return 0;
} void Dfs_A(int x ,int y ,int t ,int fx)
{
int nowx = x + dir[fx][0];
int nowy = y + dir[fx][1];
while(ok_A(nowx ,nowy))
{
map_A[nowx][nowy] = ++t;
nowx += dir[fx][0];
nowy += dir[fx][1];
}
nowx -= dir[fx][0];
nowy -= dir[fx][1];
nowx += dir[(fx+1)%4][0];
nowy += dir[(fx+1)%4][1];
if(ok_A(nowx ,nowy))
{
map_A[nowx][nowy] = ++t;
Dfs_A(nowx ,nowy ,t ,(fx+1)%4);
}
} void Dfs_B(int x ,int y ,int t ,int fx)
{
int nowx = x + dir[fx][0];
int nowy = y + dir[fx][1];
while(ok_B(nowx ,nowy))
{
map_B[nowx][nowy] = ++t;
nowx += dir[fx][0];
nowy += dir[fx][1];
}
nowx -= dir[fx][0];
nowy -= dir[fx][1];
nowx += dir[(fx-1+4)%4][0];
nowy += dir[(fx-1+4)%4][1];
if(ok_B(nowx ,nowy))
{
map_B[nowx][nowy] = ++t;
Dfs_B(nowx ,nowy ,t ,(fx-1+4)%4);
}
} int main ()
{
int x11 ,y11 ,d11 ,x22 ,y22 ,d22 ,i ,j;
while(~scanf("%d" ,&n) && n)
{
scanf("%d %d %d" ,&x11 ,&y11 ,&d11);
scanf("%d %d %d" ,&x22 ,&y22 ,&d22);
x11 ++ ,y11 ++ ,x22 ++ ,y22 ++;
memset(map_A ,0 ,sizeof(map_A));
memset(map_B ,0 ,sizeof(map_B));
map_A[x11][y11] = 1;
x1 = x11 ,y1 = y11;
Dfs_A(x11 ,y11 ,1 ,d11);
map_B[x22][y22] = 1;
x2 = x22 ,y2 = y22;
Dfs_B(x22 ,y22 ,1 ,d22);
int mk = 0 ,ii ,jj;
for(i = 1 ;i <= n;i ++)
for(j = 1 ;j <= n;j ++)
{
if(!map_A[i][j] || !map_B[i][j])
continue;
if(map_A[i][j] == map_B[i][j])
{
if(!mk || mk > map_A[i][j])
{
ii = i ,jj = j ,mk = map_A[i][j];
}
}
if(map_A[i][j] > map_B[i][j] && i == x2 && j == y2)
{
if(!mk || mk > map_A[i][j])
{
ii = i ,jj = j ,mk = map_A[i][j];
}
}
if(map_A[i][j] < map_B[i][j] && i == x1 && j == y1)
{
if(!mk || mk > map_B[i][j])
{
ii = i ,jj = j ,mk = map_B[i][j];
}
}
}
if(mk) printf("%d %d\n" ,ii - 1,jj - 1);
else printf("-1\n");
}
return 0;
}
hdu4740 不错的简单搜索的更多相关文章
- 和我一起打造个简单搜索之SpringDataElasticSearch入门
网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...
- 和我一起打造个简单搜索之Logstash实时同步建立索引
用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...
- ElasticSearch 5学习(4)——简单搜索笔记
空搜索: GET /_search hits: total 总数 hits 前10条数据 hits 数组中的每个结果都包含_index._type和文档的_id字段,被加入到_source字段中这意味 ...
- nyoj 284 坦克大战 简单搜索
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...
- 分布式搜索ElasticSearch构建集群与简单搜索实例应用
分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...
- solr简单搜索案例
solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...
- 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...
- 和我一起打造个简单搜索之IK分词以及拼音分词
elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字.所以我们引入 es 插件 es-ik.同时为了提升用户体验,引入 es-pinyin 插件.本 ...
- 和我一起打造个简单搜索之ElasticSearch集群搭建
我们所常见的电商搜索如京东,搜索页面都会提供各种各样的筛选条件,比如品牌.尺寸.适用季节.价格区间等,同时提供排序,比如价格排序,信誉排序,销量排序等,方便了用户去找到自己心里理想的商品. 站内搜索对 ...
随机推荐
- 运营好帮手| 华为DTM助电商类应用实现营销数据快速跟踪
对于电商来说,销售额就是生命线,业务运营人员需要实时关注订单量,交易额,支付转化率等,并从各种维度对比分析,无论增幅或降幅,都需要马上找到原因,落地运营手段进行干预.快速准确的得到各种营销数据就显得格 ...
- 小程序基于Token登录 示意图
- JavaScript中的事件循环机制跟函数柯里化
一.事件循环机制的理解 test();//按秒输出5个5 function test() { for (var i = 0; i < 5; i++) { setTimeout(() => ...
- MyBatis文档
MyBatis 学习笔记 简介 什么是Mybatis MyBatis 是一款优秀的持久层框架,是Apache的一个Java开源项目 ,它支持自定义 SQL.存储过程以及高级映射, 免除了几乎所有的 J ...
- CVE-2014-4210 SSRF漏洞
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis.fastcgi等脆弱组件. 修复方式: 1.删除server/lib/uddiexplorer.w ...
- ubuntu18.04+gunicorn+nginx+supervisor+mysql+redis安装django项目
Ubuntu18.04 install Django project 项目准备: ECS 实例 (云服务器) 此安装部署方案适合本地ubuntu18.04系统安装和虚拟机中ubuntu18.04系统安 ...
- JVM实战调优(空格引发的服务异常)
JVM实战调优 问题描述 某一个项目中有一个文字转语音的服务,使用的是科大讯飞的语音转换服务,需要调用三方服务.因其转换服务是一个耗时操作,官方给的demo使用的是 WebSocket 进行数据转换操 ...
- 微软跨平台UI框架MAUI真的要来啦
.NET 6 preview已经上线,是时候为在BUILD 2020上宣布的新.NET Multi-platform App UI(MAUI)做准备了.对于客户端应用程序开发人员来说,这一年.NET有 ...
- python报错:AttributeError: module 'pdb' has no attribute 'set_trace'
在第一次使用python中的pdb模块式,pdb.set_trace()时编译器总是会报错,一开始总是以为是自己的拼写错误,但经过反复检查后发现并不是自己的拼写错误.而是我创建的测试文件的名称是pdb ...
- 从零学脚手架(八)---webpack-dev-server源码分析
上一篇中介绍了webpack-dev-server属性配置 这一篇就简单的梳理下webpack-dev-server内部实现. 由于涉及到源码解析,所以会涉及到一些比较难啃的知识,我会尽量进行简单化描 ...