[BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)
题目描述
传送门
题解
看题了之后算了算,步数只有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)相关推荐
- bzoj1616[Usaco2008 Mar]Cow Travelling游荡的奶牛*
bzoj1616[Usaco2008 Mar]Cow Travelling游荡的奶牛 题意: n行m列的草地上有一些位置有障碍物.第0时刻奶牛在(r1,c1),第t时刻奶牛在(r2,c2)(注意这里都 ...
- BZOJ 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛【DP】
1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec Memory Limit: 64 MB Description 奶牛们在被划分成N ...
- BZOJ1616[Usaco2008 Mar]Cow Travelling游荡的奶牛 dp
Description 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草.Farmer John ...
- bzoj1616 [Usaco2008 Mar]Cow Travelling游荡的奶牛 [BFS]
Description 奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走,试图找到整块草地中最美味的牧草.Farmer John ...
- BZOJ1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
题目传送门 题解: 水题一道 bfs水过 代码直接抄黄学长的 #include<iostream> #include<cstdio> using namespace std; ...
- bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛(BFS)
1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1293 Solved ...
- BZOJ 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 bfs
1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1290 Solved ...
- 【bzoj 1616】: [Usaco2008 Mar]Cow Travelling游荡的奶牛 dp
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1616 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Tim ...
- BZOJ 1616 Usaco2008 Cow Travelling
1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1412 Solved ...
最新文章
- 在Azure上创建MYSQL服务
- 一句话介绍区块链是什么
- 我司那产品经理丨第三期
- centos java服务器搭建_从零开始搭建CentOS 7服务器配置JavaWeb环境
- openstack quantum搭建过程中一些有用的链接
- 征信考量社交化和大数据化
- 圆我一个游戏梦,XNA版超级玛丽
- linux 桌面什么图标好看,Xenlism WildFire:Linux桌面下的一款漂亮图标主题
- 如何进行航拍全景摄影(上)
- 百看不如一练, 247 个 Python 实战案例(附源代码)
- 无线通信中存在的远近效应、多普勒效应、多径效应以及其应对策略
- 地图制图领域使用计算机优点在于哪些方面,电子地图制图的运用与发展
- 怎么恢复永久删除的文件
- yolov5 训练结果解析
- Excel如何一键改色
- No mapping found for HTTP request with URI问题解决
- 计算机应用教学总结,计算机教学总结
- 为将来而记下的过去——扭曲的爱,病态的教育
- 2021-07-28 产品开发过程纪实-家用洗菜-智商税收割
- GolangBlog ModuleSeries - Part 2 | Migrating to Go Modules
热门文章
- 中国人寿保险单管理系统市场趋势报告、技术动态创新及市场预测
- htc t328w android4.0,Android4.0新机 HTC T328w仅售1999
- ModuleNotFoundError: No module named ‘sentence_transformers‘
- mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)
- python手机话费_Python软件测试中“电话费”问题的解决方案,python,版本,账单,题解...
- opencv心得体会_OpenCV心得
- anaconda使用心得
- c语言中的字母占位符,C语言专题-基本数据类和占位符
- 搭建无线监控云存储服务器,mac 篇二:自建docker视频录像机NVR存储-家用摄像头云存储服务zoneminder...
- VUE优秀UI组件库(PC和Mobile)