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< ...
随机推荐
- mysql----用户root被删除或忘记root密码的解决方案
修改文件my.cnf,可用VIM打开,如:sudo vim /etc/my.cnf 在[mysqld]下加上一行: skip-grant-tables 保存文件,然后重启mysqld程序:sudo s ...
- apacheOfbiz
一.ofbiz 用自身数据库安装 1. 由 binary 安装: 由 binary 安装非常简单, 以下是安装方法: 下载ofbiz-2.0-beta1-complete.tar.gz, 注意不是of ...
- JS nodeType返回类型
JS nodeType返回类型 前几天朋友正好问道 这个 js的nodeType是个什么概念(做浏览器底层的)正好遇到这篇文章可以向大家解释下 将HTML DOM中几个容易常用的属性做下记录: nod ...
- POJ3260:The Fewest Coins(混合背包)
Description Farmer John has gone to town to buy some farm supplies. Being a very efficient man, he a ...
- java与.net比较学习系列(7) 属性
文章摘自:http://www.cnblogs.com/mcgrady/p/3411405.html 说起属性,实际上java中没有属性这个概念,只有字段和方法,但是可以通过私有字段和声明get,se ...
- Android软件开发之常用系统控件界面整理
1.文本框TextView TextView的作用是用来显示一个文本框,下面我用两种方式为大家呈现TextView, 第一种是通过xml布局文件呈现 ,第二种是通过代码来呈现,由此可见Android ...
- Unity目录结构
http://www.cnblogs.com/liudq/p/5540051.htmlUnity中有几个默认目录 Unity5.x Resources 项目中默认的资源路径,会直接打包到游戏包中.即使 ...
- Asp.net开发常用的51个非常实用的代码
1.弹出对话框.点击转向指定页面 Code: Response.Write("<script>window.alert('该会员没有提交申请,请重新提交!')</scrip ...
- 《JavaScript 闯关记》之 DOM(上)
DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API.DOM 描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 节点层次 DOM 可以将任何 HTML 或 XM ...
- 仿QQ好友列表界面的实现
TableView有2种style:UITableViewStylePlain 和 UITableViewStyleGrouped. 但是QQ好友列表的tableView给人的感觉似乎是2个style ...