题意:

     给你一个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 不错的简单搜索的更多相关文章

  1. 和我一起打造个简单搜索之SpringDataElasticSearch入门

    网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...

  2. 和我一起打造个简单搜索之Logstash实时同步建立索引

    用过 Solr 的朋友都知道,Solr 可以直接在配置文件中配置数据库连接从而完成索引的同步创建,但是 ElasticSearch 本身并不具备这样的功能,那如何建立索引呢?方法其实很多,可以使用 J ...

  3. ElasticSearch 5学习(4)——简单搜索笔记

    空搜索: GET /_search hits: total 总数 hits 前10条数据 hits 数组中的每个结果都包含_index._type和文档的_id字段,被加入到_source字段中这意味 ...

  4. nyoj 284 坦克大战 简单搜索

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...

  5. 分布式搜索ElasticSearch构建集群与简单搜索实例应用

    分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...

  6. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  7. 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮

    前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...

  8. 和我一起打造个简单搜索之IK分词以及拼音分词

    elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字.所以我们引入 es 插件 es-ik.同时为了提升用户体验,引入 es-pinyin 插件.本 ...

  9. 和我一起打造个简单搜索之ElasticSearch集群搭建

    我们所常见的电商搜索如京东,搜索页面都会提供各种各样的筛选条件,比如品牌.尺寸.适用季节.价格区间等,同时提供排序,比如价格排序,信誉排序,销量排序等,方便了用户去找到自己心里理想的商品. 站内搜索对 ...

随机推荐

  1. 人脸检测数据源制作与基于caffe构架的ALEXNET神经网络训练

    本篇文章主要记录的是人脸检测数据源制作与ALEXNET网络训练实现检测到人脸(基于caffe). 1.数据获取 数据获取: ① benchmark是一个行业的基准(数据库.论文.源码.结果),例如WI ...

  2. SQL-MYSQL的时间格式转换(持续补充)

    ======================SQLSERVER===================================== SELECT CONVERT(varchar(100), GE ...

  3. python 实现输出一个等腰三角形

    这个问题实际上是一个数学问题,我们主要找出每行的规律就可以根据规律来书写代码 """ 2 代码实现输出一个等腰三角形,实际上就是一个等差数列求各项的一个数学> 问题 ...

  4. 都在讲Redis主从复制原理,我来讲实践总结

    摘要:本文将演示主从复制如何配置.实现以及实现原理,Redis主从复制三大策略,全量复制.部分复制和立即复制. 本文分享自华为云社区<Redis主从复制实践总结>,原文作者:A梦多啦A . ...

  5. 【hacker101 CTF】Photo Gallery

    0x01 打开首页看到 查看源代码,发现图片都是通过"fetch?id=1"这种方式加载的 简单测了一下存在SQL注入. 直接上sqlmap跑 第一个flag: ^FLAG^d45 ...

  6. OpenCV图像处理中“找圆技术”的使用

    一.为什么"找圆"     圆是基本图形的一种,更为重要的是,自然情况下采集的图像,很少大量存在"圆":但凡存在的,大都是人工的,那么就必然代表特定的意义,从而 ...

  7. Java类集框架详细汇总-底层分析

    前言: Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾: Collection集合接口 继承自:Iterable public interfa ...

  8. 关于生产环境改用G1垃圾收集器的思考

    背景 由于我们的业务量非常大,响应延迟要求高.目前沿用的老的ParNew+CMS已经不能支撑业务的需求.平均一台机器在1个月内有1次秒级别的stop the world.对系统来说是个巨大的隐患.所以 ...

  9. Macbook 安装kali linux 双系统 2020.3 超详细

    博主折腾了一星期这东西,到现在都还有些坑没解决(最后面会讲).不过最起码系统装上了,可以用了,看到这桌面惊艳了,再点下左上角表示人间值得. 其实我是装了windos 10.macos 和kali三系统 ...

  10. Dynamics CRM修改密码界面

    我们再实施Dynamics CRM的过程中经常会被客户吐槽没有一个修改密码的页面.市面上也有一些人通过自己操作AD库进行修改密码的解决方案不过多多少少会有一些BUG存在.其实ADFS提供了一个修改密码 ...