搜索

不知道为什么没有人写bfsbfsbfs

觉得挺像是标准个bfsbfsbfs的

状态

因为要统计次数,不能简单地跳过一个被经过的点

这样的话,状态量会爆炸

采用记忆化

设dp[i][j][k]dp[i][j][k]dp[i][j][k]表示在第kkk分钟到达点(i,j)" role="presentation">(i,j)(i,j)(i,j)的方案数

以地点+时间作为状态

避免同一状态被反复拓展

这样,状态量将减少至最多100∗100∗15100∗100∗15100*100*15

转移

这就比较显然了

对于将被拓展的状态,在计数时加上当前状态的方案数

如果这个状态曾被拓展,就不要别的操作了

否则,将这一状态入队,预备拓展其他状态

代码是这样的:

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
struct node{int x,y,s;  //x、y表示坐标,s表示时间
};
queue<node>q;
int n,m,t,r1,c1,r2,c2,dp[110][110][20];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};   //移动
string s[110];
int main()
{cin>>n>>m>>t;for(int i=1;i<=n;i++)cin>>s[i];cin>>r1>>c1>>r2>>c2;dp[r1][c1][0]=1;    //初始方案数为1q.push(node{r1,c1,0});while(!q.empty()){node u=q.front();q.pop();for(int i=0;i<4;i++){node th;th.x=u.x+dx[i];th.y=u.y+dy[i];th.s=u.s+1;if(dp[th.x][th.y][th.s]){dp[th.x][th.y][th.s]+=dp[u.x][u.y][u.s];continue;   //当前状态曾被拓展}if(th.x<1||th.x>n||th.y<1||th.y>m||s[th.x][th.y-1]=='*'||th.s>t)continue;   //越界或不能走或超时,跳过dp[th.x][th.y][th.s]+=dp[u.x][u.y][u.s];    //计数q.push(th);}}cout<<dp[r2][c2][t]<<endl;return 0;
}

USACO2008游荡的奶牛相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. [USACO Mar08] 游荡的奶牛

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

  9. P1535 游荡的奶牛

    P1535 游荡的奶牛 题目描述 Searching for the very best grass, the cows are travelling about the pasture which ...

最新文章

  1. 使用MyEclipse2017进行web开发
  2. 【转】MongoDB 3.0 正式版本即将发布,强力推荐
  3. java 时间处理_JAVA处理日期时间常用方法
  4. ios html 禁止下拉,ios禁止页面下拉
  5. 【python教程入门学习】用Python制作迷宫GIF
  6. Android 系统(74)---Android手势触摸事件的分发和消费机制
  7. 【python+flume+kafka+spark streaming】编写word_count入门示例
  8. 风变Python 15数据的读入以及写出以及数据的编码类型
  9. 对即时通讯个人信息的一点想法
  10. JavaScript篇 深入理解JavaScript函数
  11. java 权限管理都用什么_java权限管理框架有哪些?
  12. 计步 android 源码,android版简易计步器源码
  13. matlab之在坐标区上添加图例函数legend
  14. 图片批量重命名编号不要括号
  15. 数据结构 课堂测验错题_200911
  16. NNDL 作业7:第五章课后题(1×1 卷积核 | CNN BP)
  17. 【Mysql】留存率指标计算
  18. wmv格式+java_Java调用ffmepg+mencoder视频格式转换(*)
  19. 科沃斯扫地机器人哪个型号最实用_科沃斯扫地机哪个型号好 三个价位三种选择...
  20. margin与padding的区别

热门文章

  1. NOIP2021题解~持续更新
  2. 一套靠谱的外贸型服装鞋业系统长啥样?
  3. 2015移动互联网行业趋势盘点(PPT)
  4. 网页保存mhtml格式
  5. body加背景图片没反应_css设置背景图片不显示问题
  6. H5手机浏览器唤起微信实现分享
  7. 梯度消亡(Gradient Vanishing)和梯度爆炸(Gradient Exploding)
  8. Ubuntu16 网卡rtl8723be 驱动安装
  9. Unexpected token o in JSON at position 1 at JSON.parse (anonym)
  10. 玩客云小盒子安装点心云,实现闲置宽带共享。