• 题意:有来两个人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;
}

西南民族大学第十二届程序设计竞赛(同步赛) A.逃出机房 (bfs)的更多相关文章

  1. 江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)

    链接:https://ac.nowcoder.com/acm/contest/635/H来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  2. 牛客网 江西财经大学第二届程序设计竞赛同步赛 D.绕圈游戏-(跳青蛙游戏)找数的所有因子就可以了

    链接:https://ac.nowcoder.com/acm/contest/635/D来源:牛客网 D.绕圈游戏 433为了帮ddd提升智商,决定陪他van特殊的游戏.433给定一个带有n个点的环, ...

  3. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级) Solution

    A: Solved. 分别处理出每个%7后余数的数字个数,再组合一下 #include <bits/stdc++.h> using namespace std; #define ll lo ...

  4. ACM-东北大学程序设计竞赛-网络赛(2016.04.16)

    Problem: A Time limit: 1s    Mem limit: 64 MB    AC/Submission: 0/0    Discuss Back   Ranklist  Stat ...

  5. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛题解

    链接:https://www.nowcoder.com/acm/contest/118/A 来源:牛客网 PUBG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  6. 第十四届浙江财经大学程序设计竞赛重现赛--A-A Sad Story

    链接:https://www.nowcoder.com/acm/contest/89/A 来源:牛客网 1.题目描述 The Great Wall story of Meng Jiangnv’s Bi ...

  7. Problem H: 零起点学算法28——参加程序设计竞赛

    #include<stdio.h> int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF) ||b ...

  8. 南昌大学航天杯第二届程序设计竞赛校赛网络同步赛 I

    链接:https://www.nowcoder.com/acm/contest/122/I来源:牛客网 题目描述 小q最近在做一个项目,其中涉及到了一个计时器的使用,但是笨笨的小q却犯难了,他想请你帮 ...

  9. 牛客网 湖南大学2018年第十四届程序设计竞赛重现赛 A game

    链接:https://www.nowcoder.com/acm/contest/125/A来源:牛客网 Tony and Macle are good friends. One day they jo ...

随机推荐

  1. Dubbo+Zookeeper(二)Dubbo架构

    上次更新博客已经是一年前,这一年发生了很多事,并不顺利,甚至有些痛苦,不过不管怎样,不要停止学习,只有学习才能让你变强,应对更多不安定. 一.RPC概念 Dubbo服务是一个RPC框架,那我们首先就要 ...

  2. 【剑指Offer】链表的基本操作之创建、插入、删除

    // C++ #include<iostream> using namespace std; //链表的定义 struct ListNode { int val; ListNode* ne ...

  3. Spring AOP之多切面运行顺序

    多切面运行顺序 当一个方法的执行被多个切面共同切的时候,环绕通知只影响当前切面的通知顺序,例如创建两个切面logUtil,validateUtil两个切面共同监视计算器类的加法运算,add(int a ...

  4. Java基础概念性问题整理,面试题型整理,附带答案详解供参考,首次整理!

    题目目录 Java基础 1.JDK1.8新特性? 2.面向对象和面向过程的区别? 3.什么是值传递和引用传递? 4.什么是不可变对象? 5.讲讲类的实例化顺序? 6.java 创建对象的几种方式 7. ...

  5. Java并发编程实战(5)- 线程生命周期

    在这篇文章中,我们来聊一下线程的生命周期. 目录 概述 操作系统中的线程生命周期 Java中的线程生命周期 Java线程状态转换 运行状态和阻塞状态之间的转换 运行状态和无时限等待状态的切换 运行状态 ...

  6. rm: cannot remove `/tmp/localhost-mysql_cacti_stats.txt': Operation not permitted

    [root@DBslave tmp]# chown zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt

  7. 【Linux】dlopen failed: /lib/lsiRAID.so: cannot open shared object file: No such file or directory

    遇到这个问题,首先第一反应,是看其他的服务器中是否有这个库文件,如果有的话直接cp过来一份就行 但是检查发现,其他的系统中也不存在lsiRAID.so这个库文件,很神奇.. 但是看日志持续报错,查看s ...

  8. 【RAC】安装rac的时候。报错checking for oracle home incompatibilities failed

    背景:由于oracle安装的时候中途出现了问题,解决过后,发现报错了 图形化安装的时候,有这个问题出现 解决办法: 删除安装过的所有缓存,和文件即可 1.删除ORACLE_BASE下的所有文件 2.删 ...

  9. ctfhub技能树—web前置技能—http协议—响应包源代码

    打开靶机环境 查看网页是一个贪吃蛇小游戏 根据提示查看源码 发现flag 至此HTTP协议结束

  10. kubectl命令管理

    kubectl命令管理 查看更多帮助命令 [root@k8s-master ~]# kubectl --help 创建一个命名空间 [root@k8s-master ~]# kubectl creat ...