bzoj1644 [Usaco2007 Oct]Obstacle Course 障碍训练课
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
.xA
...
Bx.
Sample Output
广搜……不解释
只要注意搜到某个点朝某个方向的时候向四个方向都判一下转个方向入队
#include<cstdio>
#include<cstring>
const int mx[4]={1,0,-1,0};
const int my[4]={0,1,0,-1};
int n,sx,sy,ex,ey,ans=100000,t,w;
int dist[4][110][110];
int q[100001];
int dire[100001];
bool map[110][110];
char ch[110];
inline int min(int a,int b){return a<b?a:b;}
inline void bfs()
{
for (int i=0;i<4;i++)
{
q[++w]=(sx-1)*n+sy;
dire[w]=i;
dist[i][sx][sy]=1;
}
while (t<w)
{
int nx;if(q[++t]%n)nx=q[t]/n+1;else nx=q[t]/n;
int ny=q[t]%n;if (!ny)ny=n;
int d=dire[t];
int step=dist[d][nx][ny];
for (int k=0;k<4;k++)
if (step+1<dist[k][nx][ny])
{
dist[k][nx][ny]=step+1;
q[++w]=(nx-1)*n+ny;
dire[w]=k;
}
int wx=nx+mx[d];
int wy=ny+my[d];
if (wx<1||wy<1||wx>n||wy>n||!map[wx][wy])continue;
if (step<dist[d][wx][wy])
{
dist[d][wx][wy]=step;
q[++w]=(wx-1)*n+wy;
dire[w]=d;
}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",ch);
for (int j=0;ch[j];j++)
{
if (ch[j]=='A')
{
sx=i;
sy=j+1;
map[i][j+1]=1;
}else
if (ch[j]=='B')
{
ex=i;
ey=j+1;
map[i][j+1]=1;
}else
if (ch[j]=='.')map[i][j+1]=1;
}
}
memset(dist,127/3,sizeof(dist));
bfs();
for(int i=0;i<4;i++)
if (dist[i][ex][ey])ans=min(ans,dist[i][ex][ey]);
printf("%d",ans-1);
}
bzoj1644 [Usaco2007 Oct]Obstacle Course 障碍训练课的更多相关文章
- BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课( BFS )
BFS... 我连水题都不会写了QAQ ------------------------------------------------------------------------- #inclu ...
- BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课
题目 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec Memory Limit: 64 MB Description 考虑一 ...
- 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课
1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 383 Solved ...
- 【BZOJ】1644: [Usaco2007 Oct]Obstacle Course 障碍训练课(bfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1644 这和原来一题用dp来做的bfs很像啊orz.. 我们设f[i][j][k]代表i,j这个点之前 ...
- bzoj 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课【spfa】
洛谷的数据毒啊 把(i,j,k)作为一个点spfa,表示点(i,j)朝向k方向,然后向四个方向转移即可 #include<iostream> #include<cstdio> ...
- 【题解】[USACO2007 OCT]Obstacle Course-C++
题目Description考虑一个 N x N (1 <= N <= 100)的有1个个方格组成的正方形牧场.有些方格是奶牛们不能踏上的,它们被标记为了’x’.例如下图: . . B x ...
- BZOJ1709: [Usaco2007 Oct]Super Paintball超级弹珠
1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 324 Solved: ...
- BZOJ1708: [Usaco2007 Oct]Money奶牛的硬币
1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 513 Solved: 329[Submi ...
- BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币( dp )
背包dp.. -------------------------------------------------------------------------------- #include< ...
随机推荐
- Linux服务器挂死案例分析
问题现象: 在linux服务器上运行一个指定的脚本时,就会出现无数个相同进程的,而且不停的产生,杀也杀不掉,最后系统就陷入死循环,无法登陆,只能人工去按机器的电源键才可以.这够崩溃的吧? 问题分析过程 ...
- IE6 max-width max-height 不起作用 解决其兼容性问题
.catelist dl dd ul li img {width: expression(this.width > 228 ? '228px': true); max-width:228px; ...
- hdu 3232 Crossing Rivers(期望 + 数学推导 + 分类讨论,水题不水)
Problem Description You live in a village but work in another village. You decided to follow the s ...
- Hibernate框架后续
持久化对象的唯一标识OID 1:我们都知道,在java中按照内存地址来区分同一个类的不同对象 而关系数据库按照主键来区分一条记录 在Hibernate中使用OID来建立内存中的对象和数据 ...
- KVO奥秘
序言 在iOS开发中,苹果提供了许多机制给我们进行回调.KVO(key-value-observing)是一种十分有趣的回调机制,在某个对象注册监听者后,在被监听的对象发生改变时,对象会发送一个通知给 ...
- PC-HTML5-搜索框
代码如下: <input type="text" placeholder="输入 回车搜索" autofocus x-webkit-speech>很 ...
- 16. Linux 文件目录权限
# 文件参数 d:表示是一个目录-:表示这是一个普通的文件l: 表示这是一个符号链接文件,实际上它指向另一个文件b.c:分别表示区块设备和其他的外围设备,是特殊类型的文件s.p:这些文件关系到系统的数 ...
- 推荐几个常用的jquery ui 框架
jQuery ui框架很多,除了官方提供的jquery UI(如果你还不知道什么是jQuery UI,请看下载了jquery ui后如何使用),还有很多第三方提供的ui框架,因官方提供的jquery ...
- HTML5+CSS3项目总结
经过一个月的学习,我基本掌握了HTML5的一些标签的用法和特性,以及一些CSS3的属性的特点和用法. 在本周安排的为期四天的第一阶段的课程的项目实训中,我基本能够熟练运用学到的知识,完成页面的速度 ...
- SQL日期形式转换
在SQL Server中,有时存储在数据库中的日期格式和我们需要显示在页面上的格式不相同,我们需要转化成需要的格式. 特在此总结了一下常用的日期格式. --当前时间 SELECT GETDATE(); ...