Description

奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草。Farmer John在某个时刻看见贝茜在位置 (R1, C1),恰好T (0 < T <= 15)秒后,FJ又在位置(R2, C2)与贝茜撞了正着。 FJ并不知道在这T秒内贝茜是否曾经到过(R2, C2),他能确定的只是,现在贝茜在那里。 设S为奶牛在T秒内从(R1, C1)走到(R2, C2)所能选择的路径总数,FJ希望有一个程序来帮他计算这个值。每一秒内,奶牛会水平或垂直地移动1单位距离(奶牛总是在移动,不会在某秒内停在它上一秒所在的点)。草地上的某些地方有树,自然,奶牛不能走到树所在的位置,也不会走出草地。 现在你拿到了一张整块草地的地形图,其中’.’表示平坦的草地,’*’表示挡路的树。你的任务是计算出,一头在T秒内从(R1, C1)移动到(R2, C2)的奶牛可能经过的路径有哪些。

Input

第1行: 3个用空格隔开的整数:N,M,T
第2..N+1行: 第i+1行为M个连续的字符,描述了草地第i行各点的情况,保证 字符是’.’和’‘中的一个  第N+2行: 4个用空格隔开的整数:R1,C1,R2,以及C2

Output

第1行: 输出S,含义如题中所述

Sample Input

4 5 6
…*.
…*.
…..
…..
1 3 1 5
输入说明:
草地被划分成4行5列,奶牛在6秒内从第1行第3列走到了第1行第5列。

Sample Output

1
奶牛在6秒内从(1,3)走到(1,5)的方法只有一种(绕过她面前的树)。

Solution

是时候刷一波权限题了。
记tot[i][j][k]tot[i][j][k]为到点(i,j)(i,j)走了kk步的总方案数,然后宽搜即可。
有一个剪枝,设当前步数为step,如果当前坐标到终点的曼哈顿距离大于T−stepT-step就剪掉。但是去掉这个剪枝好像还是0ms。。。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>using namespace std;int n, m, T;
char map[105][105];
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int sx, sy, ex, ey;struct Node{int x, y, step;Node() {}Node(int a, int b, int c) : x(a), y(b), step(c) {}
};bool check(int x, int y, int step) {if (x < 0 || x >= n || y < 0 || y >= m) return false;if (map[x][y] == '*') return false;if (abs(ex - x) + abs(ey - y) > T - step) return false;return true;
}int tot[105][105][18];
bool vis[105][105][18];
int bfs() {queue<Node> q;tot[sx][sy][0] = 1;vis[sx][sy][0] = 1;q.push(Node(sx, sy, 0));while (!q.empty()) {Node cur = q.front();q.pop();for (int i = 0; i < 4; i++) {int nx = cur.x + dir[i][0];int ny = cur.y + dir[i][1];if (check(nx, ny, cur.step + 1)) {tot[nx][ny][cur.step + 1] += tot[cur.x][cur.y][cur.step];if (cur.step + 1 < T && !vis[nx][ny][cur.step + 1]) {vis[nx][ny][cur.step + 1] = 1;q.push(Node(nx, ny, cur.step + 1));}}}vis[cur.x][cur.y][cur.step] = 0;}return tot[ex][ey][T];
}int main() {scanf("%d %d %d", &n, &m, &T);for (int i = 0; i < n; i++)scanf("%s", map[i]);scanf("%d %d %d %d", &sx, &sy, &ex, &ey);sx--, sy--, ex--, ey--;int res = bfs();printf("%d\n", res);return 0;
}

bzoj1616 [Usaco2008 Mar]Cow Travelling游荡的奶牛 [BFS]相关推荐

  1. bzoj1616[Usaco2008 Mar]Cow Travelling游荡的奶牛*

    bzoj1616[Usaco2008 Mar]Cow Travelling游荡的奶牛 题意: n行m列的草地上有一些位置有障碍物.第0时刻奶牛在(r1,c1),第t时刻奶牛在(r2,c2)(注意这里都 ...

  2. BZOJ 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 bfs

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1290  Solved ...

  3. BZOJ1616[Usaco2008 Mar]Cow Travelling游荡的奶牛 dp

    Description 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草.Farmer John ...

  4. BZOJ1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛

    题目传送门 题解: 水题一道 bfs水过 代码直接抄黄学长的 #include<iostream> #include<cstdio> using namespace std; ...

  5. [BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)

    题目描述 传送门 题解 看题了之后算了算,步数只有15步,似乎加了这个剪枝之后状态很少啊= =于是直接开始码bfs.码出来了之后发现对拍大数据老是出错,而且把剪枝加的越少数越小!原来我忽略了一个非常重 ...

  6. bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛(BFS)

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1293  Solved ...

  7. BZOJ 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛【DP】

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec Memory Limit: 64 MB Description 奶牛们在被划分成N ...

  8. 【bzoj 1616】: [Usaco2008 Mar]Cow Travelling游荡的奶牛 dp

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1616 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Tim ...

  9. BZOJ 1616 Usaco2008 Cow Travelling

    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1412  Solved ...

最新文章

  1. 英语词汇(5)followed by / sung by / written by
  2. linux打开dc软件,Linux bc/dc命令的初步使用
  3. 实现输入一个字符串,分别将大写字母、小写字母、数字、其他字符存到列表里面并且输出列表
  4. python人人贷爬虫_爬取人人贷网上部分借贷信息以及数据可视化
  5. 这批.Net程序员水平不行啊!居然ASP.NET Core Middleware都不会用
  6. onenote快捷键_高效飞快地使用onenote快捷键:快捷键功能架构解析
  7. iOS interface适配
  8. AKKA Actor创建
  9. 抛出与抽象相对应的异常(61)
  10. java怎么限制一个对象的内存_java对象的内存布局及创建过程
  11. Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
  12. ArcMap 入门教程
  13. leslie模型matlab代码6,Leslie_model
  14. html选择地区代码,jQuery中国区域选择器插件
  15. 如何实现某个软件的单独断网/稳定地解决fluent断网计算中止问题/tecplot联网后打开程序出现报错问题
  16. 图像变换 - 图像拉伸、收缩、扭曲、旋转- 仿射变换(cvWarpAffine)
  17. java 反应堆模式_Java NIO 反应堆模式
  18. 葫芦娃系列棋牌服务器在哪里,葫芦娃—【关服】葫芦娃关服公告
  19. 达索系统基于3DEXPERIENCE平台开发工具介绍
  20. react18.0.0+ts路由配置

热门文章

  1. Grails(Java笨狗)系列-更好的理解闭包(closure)
  2. 美国计算机转教育专业,2021年可以申请转专业计算机科学CS专业的这3所美国大学 可别错过哟!...
  3. CSS峰会亮点直击,大咖共议产业上云的安全“最优解”
  4. 从Trimble服务器下载历书
  5. 社会管理网格化 源码_天津市红桥区社会治理网格化管理平台获CIO智选政务应用奖...
  6. debian VBoxManage 命令行安装 win2003
  7. 《嫌疑人X的献身》读书笔记
  8. 解决adb无法连接夜神模拟器的问题
  9. 什么是HBA(Host Bus Adapter,HBA)
  10. cla作用matlab,共轭亚油酸(CLA)为什么能减脂?90%的健身者都不懂!