• 题意:有来两个人A和B,A追B,A和B每次向上下左右移动一个单位,一共有两扇门,问A是否可以追上B(在门口追上也算合法).
  • 题解:当时看题意说在门口也算?就觉得是判断两个人到门口的时间,对他们两个人分别跑bfs,记录他们到每个门口的步数,然后if判断一下即可.
  • 代码:
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define me memset
#define rep(a,b,c) for(int a=b;a<=c;++a)
#define per(a,b,c) for(int a=b;a>=c;--a)
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
using namespace std;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b) {return a/gcd(a,b)*b;} int n,m;
char s[20][20];
bool st[20][20];
int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
int zx,zy,hx,hy;
int ex1,ey1,ex2,ey2;
int res1=INF,res2=INF,res3=INF,res4=INF; struct misaka{
int x,y,cnt;
}e; void bfs1(int x,int y){
me(st,false,sizeof(st));
queue<misaka> q;
int cur=0;
q.push({x,y,0}); while(!q.empty()){
auto tmp=q.front();
q.pop(); if(st[tmp.x][tmp.y]) continue;
st[tmp.x][tmp.y]=true; if(s[tmp.x][tmp.y]=='@' && cur<2){
if(tmp.x==ex1 && tmp.y==ey1){
res1=tmp.cnt;
}
else res2=tmp.cnt;
cur++;
} rep(i,0,3){
int tx=tmp.x+dx[i];
int ty=tmp.y+dy[i];
if((s[tx][ty]=='*' || s[tx][ty]=='@') && !st[tx][ty]){
q.push({tx,ty,tmp.cnt+1});
}
}
}
} void bfs2(int x,int y){
me(st,false,sizeof(st));
queue<misaka> q;
int cur=0;
q.push({x,y,0}); while(!q.empty()){
auto tmp=q.front();
q.pop(); if(st[tmp.x][tmp.y]) continue;
st[tmp.x][tmp.y]=true; if(s[tmp.x][tmp.y]=='@' && cur<2){
if(tmp.x==ex1 && tmp.y==ey1){
res3=tmp.cnt;
}
else res4=tmp.cnt;
cur++;
} rep(i,0,3){
int tx=tmp.x+dx[i];
int ty=tmp.y+dy[i];
if((s[tx][ty]=='*' || s[tx][ty]=='@') && !st[tx][ty]){
q.push({tx,ty,tmp.cnt+1});
}
}
}
} int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin>>n>>m; rep(i,1,n){
rep(j,1,m){
cin>>s[i][j];
if(s[i][j]=='Z') {zx=i,zy=j;}
else if(s[i][j]=='H') {hx=i,hy=j;}
else if(s[i][j]=='@'){
if(!ex1 && !ey1) {ex1=i;ey1=j;}
else {ex2=i;ey2=j;}
}
}
} bfs1(hx,hy);
bfs2(zx,zy); if(res3<res1 || res4<res2) cout<<"give me northeast chicken rice and milk tea TOMORROW!\n";
else cout<<"give me northeast chicken rice and milk tea!\n"; return 0;
}

最新文章

  1. 说说Java的内存
  2. 萝卜叶万能助手SEO网络营销简介
  3. LightSpeed 相关问题处理
  4. robotframework笔记2
  5. lintcode:玩具工厂
  6. 从零学起PHP
  7. NODE JS拼命吹,我就不喜欢. 别问为什么,直觉.
  8. 转--Oracle DB 服务器系统时间修改问题与 SCN 关系的深入研究
  9. sql第一课笔记
  10. RabbitMQ广播:fanout模式
  11. JS上传文件、导入文件
  12. OneinStack——PHP多版本共存
  13. oracle数据入库出现空格问题
  14. java 判断两个时间段是否有交集
  15. 胡小兔的 PKUSC2018 游记
  16. dubbo系列六、SPI扩展Filter隐式传参
  17. Servlet的多线程和线程安全
  18. js判断手机是安卓还是ios
  19. Hadoop基础-MapReduce的Partitioner用法案例
  20. [kafka] 002_kafka_相关术语详细解析

热门文章

  1. 【Redis3.0.x】持久化
  2. AvaloniaUI体验
  3. java中如何踢人下线?封禁某个账号后使其会话立即掉线!
  4. 如何实现微信小程序动画?添加到我的小程序动画实现详细讲解,轻松学会动画开发!附壁纸小程序源码下载链接
  5. migo的BAPI示例BAPI_GOODSMVT_CREATE
  6. vue href url地址写法
  7. 部署自动初始化Schema的数据库
  8. JavaScript中的深拷贝和浅拷贝!【有错误】还未修改!请逛其他园子!
  9. 《CSP.OI吟》
  10. Centos7部署FytSoa项目至Docker——第一步:安装Docker