1644: [Usaco2007 Oct]Obstacle Course 障碍训练课

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 680  Solved: 326
[Submit][Status][Discuss]

Description

考虑一个 N x N (1 <= N <= 100)的有1个个方格组成的正方形牧场。有些方格是奶牛们不能踏上的,它们被标记为了'x'。例如下图:

. . B x .
. x x A .
. . . x .
. x . . .
. . x . .

贝茜发现自己恰好在点A处,她想去B处的盐块舔盐。缓慢而且笨拙的动物,比如奶牛,十分讨厌转弯。尽管如此,当然在必要的时候她们还是会转弯的。对于一个给定的牧场,请你计算从A到B最少的转弯次数。开始的时候,贝茜可以使面对任意一个方向。贝茜知道她一定可以到达。

Input

第 1行: 一个整数 N 行

2..N + 1: 行 i+1 有 N 个字符 ('.', 'x', 'A', 'B'),表示每个点的状态。

Output

行 1: 一个整数,最少的转弯次数。

Sample Input

3
.xA
...
Bx.

Sample Output

2

BFS

bet[i][j][k]表示到达点(i, j)此时面向k方向的最少拐弯次数

bzoj3393和这道题一样,都是求最小拐弯次数,唯一的区别就是注意3393行和列是反的

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
typedef struct
{int x, y;int lt;
}Point;
Point now, temp;
queue<Point> q;
char str[105][105];
int bet[105][105][5], dir[4][2] = {1,0,0,1,-1,0,0,-1};
int main(void)
{int n, i, j, x, y, ans, k;scanf("%d", &n);memset(str, 'x', sizeof(str));memset(bet, 1, sizeof(bet));for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf(" %c", &str[i][j]);if(str[i][j]=='A'){bet[i][j][4] = -1;now.x = i, now.y = j;now.lt = 4;q.push(now);}if(str[i][j]=='B')x = i, y = j;}}while(q.empty()==0){now = q.front();q.pop();for(i=0;i<=3;i++){temp.x = now.x+dir[i][0];temp.y = now.y+dir[i][1];if(str[temp.x][temp.y]=='x')continue;temp.lt = i;if(temp.lt==now.lt)  k = bet[now.x][now.y][now.lt];else  k = bet[now.x][now.y][now.lt]+1;if(bet[temp.x][temp.y][temp.lt]>k){bet[temp.x][temp.y][temp.lt] = k;q.push(temp);}}}ans = 100000;for(i=0;i<=3;i++)ans = min(ans, bet[x][y][i]);printf("%d\n", ans);return 0;
}
/*
6
A..x.B
xx.x.x
...x..
.xxxx.
...x..
.x...x
*/

bzoj 3393 bzoj 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课(BFS)相关推荐

  1. BZOJ-1644: [Usaco2007 Oct]Obstacle Course 障碍训练课(SPFA)

    1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 707  Solve ...

  2. bzoj 1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪(DP)

    1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 Time Limit: 5 Sec  Memory Limit: 64 MB Submit:  ...

  3. bzoj 2654 bzoj 3675 总结

    bzoj 2654 && bzoj 3675 总结 手动博客搬家: 本文发表于20180929 15:18:55, 原地址https://blog.csdn.net/suncongbo ...

  4. [BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

    1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: ...

  5. bzoj 3386 bzoj 3408: [Usaco2009 Oct]Heat Wave 热浪(最短路)

    3408: [Usaco2009 Oct]Heat Wave 热浪 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 301  Solved: 223 [ ...

  6. bzoj 1627: [Usaco2007 Dec]穿越泥地(BFS)

    1627: [Usaco2007 Dec]穿越泥地 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 768  Solved: 517 [Submit][S ...

  7. bzoj 1640 bzoj 1692: [Usaco2007 Dec]队列变换(后缀数组)

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1756  Solved: 737 [Submit][ ...

  8. bzoj 1636 bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队(RMQ)

    1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1514  Solved:  ...

  9. [bzoj 2768][bzoj 1877]

    传送门1 传送门1 Solution 两道比较裸的题... 复习一下最大流和费用流的模板. Code[bzoj 2768][JLOI 2010] 冠军调查 #include<bits/stdc+ ...

最新文章

  1. CVPR 2021 | 国防科大:基于几何稳定性分析的物体位姿估计方法
  2. YourEclipse—不只是Eclipse开发者社区
  3. JavaMail 发送邮件
  4. Python面向对象(一)
  5. SAP Data Intelligence Graph使用浏览器访问的url规范
  6. [TypeScript] vs code TSLint常见错误解决方案
  7. 基于51单片机的流水灯(C语言)
  8. SMBUS和i2cBus,PMBus 区别
  9. Xshell 6免费版
  10. QT自动检测系统语言代码
  11. VelocityTracker 使用
  12. 什么是高质量的代码--整理的网上博文
  13. 青龙羊毛——猫咪放羊(搬运)
  14. 记录一次docker安装遇到的坑
  15. java中 访问修饰符限制性最高的是,问:JAVA中,访问修饰符限制性最高的是( )。(选择一项)...
  16. HuggingFace Transformers框架使用教程
  17. Python数据分析:实时更新全国全球疫情分析
  18. 云服务器物理机在,一个云服务器会在两个物理机上吗
  19. hadoop自定义排序,分组排序
  20. Activiti初识

热门文章

  1. python中文读音-python中文谐音 Python 的中文谐音是什么?
  2. Kaldi(A1)语音识别原理
  3. 语音识别的两个方法_语音识别的应用有哪些
  4. 车辆及其应用的车载语音识别显示方法及系统与流程
  5. @Transactiona注解的使用
  6. C语言内存模型的栈帧,java内存模型(线程独占部分)
  7. Vuex的核心概念state
  8. LeetCode 49 字母异位词分组
  9. 最简单的基于FFmpeg的移动端例子:Android 视频转码器
  10. AAC规格(LC,HE,HEv2)及性能对比