130. [USACO Mar08] 游荡的奶牛

★☆   输入文件:ctravel.in   输出文件:ctravel.out   简单对比
时间限制:1 s   内存限制:128 MB

奶牛们在被划分成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)的奶牛可能经过的路径有哪些。

程序名: ctravel

输入格式:

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

输入样例 (ctravel.in):

4 5 6
...*.
...*.
.....
.....
1 3 1 5

输入说明:

草地被划分成4行5列,奶牛在6秒内从第1行第3列走到了第1行第5列。

输出格式:

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

输出样例 (ctravel.out):

1

输出说明:

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

递推

T秒可到的位置等于四个方向T-1秒可到的路径数之和

由BFS一个状态(x,y,t)只能出现一次,因为t出现则t-1必定已经全部出现]

#include <iostream>
#include <cstdio>using namespace std;#define MAX_T 16
#define MAX_N 102
#define MAX_Q 100000
#define ADD(x) x=(x+1)%MAX_Qstruct Pos
{int x,y;int step;
} queue[MAX_Q];
int front,rear;int N,M,T;
char map[MAX_N][MAX_N];
int dp[MAX_N][MAX_N][MAX_T];
bool used[MAX_N][MAX_N][MAX_T];
int sx,sy,tx,ty;
int cnt=0;
int dx[]={1,-1,0,0};
int dy[]={0,0,-1,1};int main()
{freopen("ctravel.in","r",stdin);freopen("ctravel.out","w",stdout);cin>>N>>M>>T;for(int i=0;i<N;i++) cin>>map[i];cin>>sy>>sx>>ty>>tx;sx--;sy--;tx--;ty--;front=rear=0;queue[rear]=Pos{sx,sy,0};dp[sx][sy][0]=1;ADD(rear);while(front!=rear){Pos p=queue[front];ADD(front);cnt++;for(int i=0;i<4;i++){int nx=p.x+dx[i],ny=p.y+dy[i];if(nx>=0 && nx<M && ny>=0 && ny<N && map[ny][nx]=='.'){if(p.step>=1)dp[p.x][p.y][p.step]+=dp[nx][ny][p.step-1];if(p.step+1<=T && !used[nx][ny][p.step+1]){used[nx][ny][p.step+1]=true;queue[rear]=Pos{nx,ny,p.step+1};ADD(rear);}}}}cout<<dp[tx][ty][T]<<endl;return 0;
}

ACM 130. [USACO Mar08] 游荡的奶牛(dp+BFS)相关推荐

  1. [USACO Mar08] 游荡的奶牛

    [USACO Mar08] 游荡的奶牛 时间限制:1 s 内存限制:128 MB 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游 ...

  2. ACM 131. [USACO Mar08] 奶牛渡河(线性dp)

    131. [USACO Mar08] 奶牛渡河 ★☆   输入文件: cowriver.in   输出文件: cowriver.out    简单对比 时间限制:1 s   内存限制:128 MB F ...

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

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

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

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

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

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

  6. F. [usaco 2009 dec]游荡的奶牛 总结

    F. [usaco 2009 dec]游荡的奶牛 总结 题目 F. [usaco 2009 dec]游荡的奶牛 时间限制:1s 空间限制:256MB 输入文件:sgraze-in 输出文件:sgraz ...

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

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

  8. 【习题详解】动态规划DP:硬币游戏 蛋糕 游荡的奶牛 决斗

    动态规划DP 硬币 蛋糕塔 游荡的奶牛 格斗 硬币 题目描述 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为"Xoinc"的两人硬币游戏. 初始时,一个有N(5 <= N ...

  9. [usaco 2009 dec]游荡的奶牛

    游荡的奶牛 题目描述 FJ 有 N (1 <= N <= 50,000)头牛,FJ的草地可以认为是一条直线. 每只牛只喜欢在某个特定的范围内吃草.第i头牛喜欢在区间(S_i, E_i)吃草 ...

最新文章

  1. LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
  2. 计算机c语言二级题型,计算机二级C语言题型和评分标准
  3. 编程中的蛇形填空问题_PCB—蛇形线的作用,这次真的是把你搞懂了
  4. hello, noip2017!
  5. Redis回收进程如何工作的?
  6. java嵌套类中的方法怎么调用_java类与嵌套嵌套后,怎么使用最外层的类建立对象后使用内部类的方法?...
  7. HALCON 21.11:深度学习笔记(2)
  8. visual stadio.net已检测到web服务器运行的不是asp.net1.1版故障的排除
  9. 计算机毕业设计最新选题汇总(持续更新)
  10. GB50174《电子信息系统机房设计规范》(福建)贯标培训通知
  11. 计算机软件考试大纲,求计算机软件资格考试大纲和复习资料
  12. 两种双绞线的线序568A与568B
  13. HTML制作诗词,利用 html2canvas 做个简单的诗词卡片生成器
  14. P and V
  15. 详细讲解D3D8里面的2D图形编程(转)
  16. java.sql.SQLException: HOUR_OF_DAY: 2 -> 3
  17. 如何正确开展网络口碑营销?
  18. 游戏服务端框架之使用Redis实现跨服排行榜
  19. iOS程序闪退的原因以及处理办法
  20. 阿里又孵出一只2000亿猛兽,马云当年的眼光太狠了

热门文章

  1. Java笨狗的C/C++
  2. AndroidStudio - - - 点击头像更换头像_菜单选择_相机拍照与相册获取
  3. 【效率为王】超详细 Hexo + Github Pages 博客搭建教程
  4. 那些年,我们一起做过的 Java 课后练习题(61 - 65)
  5. 最详细的宝塔青龙面板搭建教程
  6. 【Codeforces 741 B. Arpa's weak amphitheater and Mehrdad's 】+ 并查集 + 01背包
  7. visudo精确用户赋权与sudo日志跟踪
  8. 有哪些你看过五遍以上的电影?
  9. 通道(channel)
  10. MKS电源维修RPG-50A射频电源维修OPTIMA RPG系列