kuangbin专题 专题一 简单搜索 Find a way HDU - 2612
题目链接:https://vjudge.net/problem/HDU-2612
题意:‘@’表示KTV,‘#’表示无法走的地方,‘Y’,'M’表示两个人,他们要在KTV见面,问他们都到达KTV要花费的时间之和。
思路:两个bfs,一个从‘M’开始,一个从‘Y’开始,跑完之后,遍历地图,找出所有KTV,并记录最短用时。
- #include <iostream>
- #include <cstring>
- #include<vector>
- #include<string>
- #include <cmath>
- #include <map>
- #include <queue>
- #include <algorithm>
- using namespace std;
- #define inf (1LL << 31) - 1
- #define rep(i,j,k) for(int i = (j); i <= (k); i++)
- #define rep__(i,j,k) for(int i = (j); i < (k); i++)
- #define per(i,j,k) for(int i = (j); i >= (k); i--)
- #define per__(i,j,k) for(int i = (j); i > (k); i--)
- const int N = ;
- int mv_x[] = { , , -, };
- int mv_y[] = { , -, , };
- int spent[N][N]; //两个人跑出的花费记录在这
- bool vis[N][N];
- char mp[N][N];
- int n, m;
- int yi, yj, mi, mj; //两个人的坐标
- struct node{
- int x, y, v;
- };
- inline void init(){
- rep(i, , n) rep(j, , m) spent[i][j] = ;
- }
- void input(){
- rep(i, , n){
- rep(j, , m){
- cin >> mp[i][j];
- if (mp[i][j] == 'M') mi = i, mj = j;
- else if (mp[i][j] == 'Y') yi = i, yj = j;
- }
- }
- }
- //是否越界
- inline bool check(int x, int y){
- return x >= && x <= n && y >= && y <= m;
- }
- void bfs(int pi, int pj){
- rep(i, , n) rep(j, , m) vis[i][j] = false;//初始化vis[][]
- queue<node > que;
- vis[pi][pj] = true;
- que.push(node{ pi, pj, });
- while (!que.empty()){
- node tmp = que.front();
- que.pop();
- rep__(p, , ){
- int dx = tmp.x + mv_x[p];
- int dy = tmp.y + mv_y[p];
- if (check(dx, dy) && !vis[dx][dy] && mp[dx][dy] != '#'){
- vis[dx][dy] = true;
- spent[dx][dy] += tmp.v; //花费时间叠加
- que.push(node{ dx, dy, tmp.v + });
- }
- }
- }
- }
- void get_ans(){
- int ans = inf;
- //如果spent[][] == 0 说明该‘@’无法到达,需要特判
- rep(i, , n){
- rep(j, , m){
- if (spent[i][j] && mp[i][j] == '@'){
- ans = min(ans, spent[i][j]);
- }
- }
- }
- cout << ans * << endl;
- }
- int main(){
- ios::sync_with_stdio(false);
- cin.tie();
- while (cin >> n >> m){
- init();//初始化
- input();//输入
- bfs(yi, yj);//第一个人
- bfs(mi, mj);//第二个人
- get_ans();//得到答案
- }
- return ;
- }
kuangbin专题 专题一 简单搜索 Find a way HDU - 2612的更多相关文章
- [kuangbin带你飞]专题一 简单搜索 Find a way HDU - 2612
Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...
- kuangbin专题总结一 简单搜索
A - 棋盘问题:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有 ...
- 简单搜索 kuangbin C D
C - Catch That Cow POJ - 3278 我心态崩了,现在来回顾很早之前写的简单搜索,好难啊,我怎么写不出来. 我开始把这个写成了dfs,还写搓了... 慢慢来吧. 这个题目很明显是 ...
- 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入门
网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 Spr ...
- 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...
随机推荐
- windows服务的编写,手动安装与卸载
windows服务的编写 1.要添加的引用 using System.ServiceProcess; using System.ServiceModel ; using WcfServiceLibra ...
- fileapi.h里的API函数(包括LockFileEx和FindFirstChangeNotification函数)
/** * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file ...
- Substring详解
class Program { static void Main(string[] args) { string str = "Hello World!"; ; //Substri ...
- 用VS2010构建MASM的编程环境,开始使用MASM(翻译自《Inetl汇编语言程序设计》一书的作者Kip R. Irvine的文章Getting Started with MASM),两种方法搭建IA-32汇编设计环境
http://blog.csdn.net/jinsonghu/article/details/5688020 http://blog.csdn.net/jinsonghu/article/detail ...
- 正则表达式-Csharp
原文:正则表达式-Csharp 学习笔记:正则表达式 一. 正则表达式 正则表达式(Regex)是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现. 一个正则表达式就是由普通的字符及特殊 ...
- 重写QLineEdit,实现编辑框内添加删除按钮的功能(随时把控件Move到一个地方,然后show就可以了,这是万能的办法)
http://www.qtcn.org/bbs/read-htm-tid-62265-ds-1-page-1.html#180286
- mysql远程表链接
FEDERATED简介 FEDERATED存储引擎是访问远程数据库中的表,在平时开发中可以用此特性来访问远程库中的参数表之类的,还是非常方便的.使用时直接在本地构建一个federated表来链接远程数 ...
- 爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷
虎扑是广大jrs的家园,步行街是这个家园里最繁华的地段.据称广大jrs平均学历985,步行街街薪30w起步. 大学时经舍友安利,开始了解虎扑,主要是看看NBA的一些资讯. 偶尔也上上这个破街,看看jr ...
- C语言实现常用排序算法——基数排序
#include<stdio.h> #include<math.h> #define SIZE 10 #define C_SIZE 20 /*行数稳定=10,切记!列数务必搞的 ...
- vmware centos7虚拟机克隆系统如何修改网卡设置?
1.克隆虚拟机,克隆前需关闭虚拟机2.克隆之后的网卡问题解决,其中需要修改HWADDR和UUID /etc/sysconfig/network-scripts/ifcfg-ens32 uuid获取 ...