题目描述

传送门

题解

看题了之后算了算,步数只有15步,似乎加了这个剪枝之后状态很少啊= =于是直接开始码bfs。码出来了之后发现对拍大数据老是出错,而且把剪枝加的越少数越小!原来我忽略了一个非常重要的问题:队列空间!!!虽然是循环队列,但是由于同时入队的元素非常多,有可能把很多有用的状态覆盖掉!
那么bfs就没法写了,不过dfs是资瓷的,因为递归层数最多是15.不过这道题其实是一道非常简单的dp,设f(i,j,k)表示第i步走到第(j,k)个格子时的方案数,然后就可以递推了。如果丧心病狂一点卡卡内存什么的还可以用滚动优化。

代码

dfs


#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
#define N 105int n,m,T,sx,sy,tx,ty,ans;
char squ[N][N],s[N];
int dx[4]={0,0,-1,1};int dy[4]={1,-1,0,0};int Abs(int x)
{return (x>0)?x:-x;
}
void dfs(int x,int y,int dep)
{if (x==tx&&y==ty&&dep==T){ans++;return;}if (dep==T) return;for (int i=0;i<4;++i){int xx=x+dx[i],yy=y+dy[i];if (xx<1||xx>n||yy<1||yy>m||squ[xx][yy]=='*') continue;if (dep+1+Abs(tx-xx)+Abs(ty-yy)>T) continue;if (dep+1<=T) dfs(xx,yy,dep+1);}
}
int main()
{scanf("%d%d%d\n",&n,&m,&T);for (int i=1;i<=n;++i){gets(s);for (int j=1;j<=m;++j) squ[i][j]=s[j-1];}scanf("%d%d%d%d",&sx,&sy,&tx,&ty);if (squ[sx][sy]=='*'||squ[tx][ty]=='*'){puts("0");return 0;}dfs(sx,sy,0);printf("%d\n",ans);
}


dp

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
#define N 105int n,m,T,sx,sy,tx,ty;
char squ[N][N],s[N];
int dx[4]={0,0,-1,1};int dy[4]={1,-1,0,0};
int f[20][N][N];int main()
{scanf("%d%d%d\n",&n,&m,&T);for (int i=1;i<=n;++i){gets(s);for (int j=1;j<=m;++j) squ[i][j]=s[j-1];}scanf("%d%d%d%d",&sx,&sy,&tx,&ty);if (squ[sx][sy]=='*'||squ[tx][ty]=='*'){puts("0");return 0;}f[0][sx][sy]=1;for (int i=1;i<=T;++i){for (int j=1;j<=n;++j)for (int k=1;k<=m;++k){if (squ[j][k]=='*') continue;for (int l=0;l<4;++l){int x=j+dx[l],y=k+dy[l];if (x<1||x>n||y<1||y>m||squ[x][y]=='*') continue;f[i][j][k]+=f[i-1][x][y];}}}printf("%d\n",f[T][tx][ty]);
}

总结

①有关于“步数”的bfs原来还可以向dp转化!并且状态之和上一维相关。

[BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)相关推荐

  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游荡的奶牛【DP】

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

  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]

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

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

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

  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游荡的奶牛 bfs

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

  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. 在Azure上创建MYSQL服务
  2. 一句话介绍区块链是什么
  3. 我司那产品经理丨第三期
  4. centos java服务器搭建_从零开始搭建CentOS 7服务器配置JavaWeb环境
  5. openstack quantum搭建过程中一些有用的链接
  6. 征信考量社交化和大数据化
  7. 圆我一个游戏梦,XNA版超级玛丽
  8. linux 桌面什么图标好看,Xenlism WildFire:Linux桌面下的一款漂亮图标主题
  9. 如何进行航拍全景摄影(上)
  10. 百看不如一练, 247 个 Python 实战案例(附源代码)
  11. 无线通信中存在的远近效应、多普勒效应、多径效应以及其应对策略
  12. 地图制图领域使用计算机优点在于哪些方面,电子地图制图的运用与发展
  13. 怎么恢复永久删除的文件
  14. yolov5 训练结果解析
  15. Excel如何一键改色
  16. No mapping found for HTTP request with URI问题解决
  17. 计算机应用教学总结,计算机教学总结
  18. 为将来而记下的过去——扭曲的爱,病态的教育
  19. 2021-07-28 产品开发过程纪实-家用洗菜-智商税收割
  20. GolangBlog ModuleSeries - Part 2 | Migrating to Go Modules

热门文章

  1. 中国人寿保险单管理系统市场趋势报告、技术动态创新及市场预测
  2. htc t328w android4.0,Android4.0新机 HTC T328w仅售1999
  3. ModuleNotFoundError: No module named ‘sentence_transformers‘
  4. mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)
  5. python手机话费_Python软件测试中“电话费”问题的解决方案,python,版本,账单,题解...
  6. opencv心得体会_OpenCV心得
  7. anaconda使用心得
  8. c语言中的字母占位符,C语言专题-基本数据类和占位符
  9. 搭建无线监控云存储服务器,mac 篇二:自建docker视频录像机NVR存储-家用摄像头云存储服务zoneminder...
  10. VUE优秀UI组件库(PC和Mobile)