题意:

     给你一个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. mysql索引设计的注意事项(大量示例,收藏再看)

    mysql索引设计的注意事项(大量示例,收藏再看) 目录 一.索引的重要性 二.执行计划上的重要关注点 (1).全表扫描,检索行数 (2).key,using index(覆盖索引) (3).通过ke ...

  2. 破解 Android 上 airpods 连接软件的pro版

    0x00 起因 起因是在Android上用了一段时间的AndPods觉得不太好用之后,换到了另一个Play商店推荐的App.动画.连接和电量提示都用的很满意,就是每次连接的弹窗和APP里面都有广告,就 ...

  3. 不使用map和set实现LRU——那用List?

    遇到一道面试题,不使用map和set实现LRU,要求get的时间复杂度为O(logn),put的时间复杂度不超过O(n).想到了用ArrayList来实现,保存有序的key.然而牵涉add节点,在保证 ...

  4. Ubuntu小配置

    Ubuntu 拍摄快照 在虚拟机安装好.配置号后各拍摄一次快照,并存储. 可在虚拟机出错后回滚 Root用户 Ubuntu默认不能以 Root用户身份直接登录 因此,正常操作时在需要调用 root权限 ...

  5. CVE-2014-4210 SSRF漏洞

    Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis.fastcgi等脆弱组件. 修复方式: 1.删除server/lib/uddiexplorer.w ...

  6. rest framework Request

    要求 如果你正在做基于REST的Web服务的东西......你应该忽略request.POST. -马尔科姆Tredinnick,Django开发组 REST框架的Request类继承了标准HttpR ...

  7. Java实现解压缩文件和文件夹

    一 前言 项目开发中,总会遇到解压缩文件的时候.比如,用户下载多个文件时,服务端可以将多个文件压缩成一个文件(例如xx.zip或xx.rar).用户上传资料时,允许上传压缩文件,服务端进行解压读取每一 ...

  8. 一起来学习LiteOS中断模块的源代码

    摘要:本文带领大家一起剖析了LiteOS中断模块的源代码. 本文我们来一起学习下LiteOS中断模块的源代码,文中所涉及的源代码,均可以在LiteOS开源站点https://gitee.com/Lit ...

  9. 建立高速缓存机制-java版

    前言 ​ 一台计算机的核心是CPU,它是计算机系统的运算和控制核心.由于它处理运算速度快,所以基本都会给CPU配置一级缓存,当CPU要读取一个数据时,首先从缓存中查询,如果没有在从内存或者磁盘块中找. ...

  10. pwnable.kr第三题bof

    Running at : nc pwnable.kr 9000 IDA查看 1 unsigned int __cdecl func(int a1) 2 { 3 char s; // [esp+1Ch] ...