搜索
不知道为什么没有人写bfs
觉得挺像是标准个bfs的

状态
因为要统计次数,不能简单地跳过一个被经过的点
这样的话,状态量会爆炸
采用记忆化
设dp[i][j][k]表示在第k分钟到达点(i,j)的方案数
以地点+时间作为状态
避免同一状态被反复拓展
这样,状态量将减少至最多100*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[][][];
int dx[]={,,,-};
int dy[]={,-,,}; //移动
string s[];
int main()
{
cin>>n>>m>>t;
for(int i=;i<=n;i++)
cin>>s[i];
cin>>r1>>c1>>r2>>c2;
dp[r1][c1][]=; //初始方案数为1
q.push(node{r1,c1,});
while(!q.empty())
{
node u=q.front();
q.pop();
for(int i=;i<;i++)
{
node th;
th.x=u.x+dx[i];
th.y=u.y+dy[i];
th.s=u.s+;
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<||th.x>n||th.y<||th.y>m||s[th.x][th.y-]=='*'||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 ;
}

Luogu P1535 【游荡的奶牛】的更多相关文章

  1. P1535 游荡的奶牛

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

  2. 洛谷 P1535 游荡的奶牛

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

  3. COGS130. [USACO Mar08] 游荡的奶牛[DP]

    130. [USACO Mar08] 游荡的奶牛 ★☆   输入文件:ctravel.in   输出文件:ctravel.out   简单对比时间限制:1 s   内存限制:128 MB 奶牛们在被划 ...

  4. BZOJ_1616_[Usaco2008_Mar]_Cow_Travelling_游荡的奶牛_(DP)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1616 给出一张图,有些点不能走,给出起始点和结束点,以及时间,求在该时间到达结束点的方案数. ...

  5. Bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛 动态规划

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

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

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

  7. BZOJ 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛( dp )

    一道水 dp ...然后我一开始用 BFS ...结果 MLE 了... dp[ i ][ j ][ k ] 由它四个方向上的 k - 1 转移. -------------------------- ...

  8. [Luogu P1345] [USACO5.4]奶牛的电信Telecowmunication (最小割)

    题面 传送门:https://www.luogu.org/problemnew/show/P1345 ] Solution 这道题,需要一个小技巧了解决. 我相信很多像我这样接蒟蒻,看到这道题,不禁兴 ...

  9. [Usaco2008 Mar]Cow Travelling游荡的奶牛[简单DP]

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

随机推荐

  1. 解题:洛谷4314 CPU监控

    题面 线段树·二重标记(什么鬼 用(a,b)标记表示先执行+a操作,然后对b取max,维护历史/当前最大值和历史/当前标记.然后我们发现区间加$x$就是$(x,-inf)$,区间赋$x$就是$(-in ...

  2. MySQL 第七篇:视图、触发器、事务、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  3. PHP正则表达式基本语法

    本章主要学习正则表达式的基本语法: 正则表达式就是一个匹配的模式,正则表达式本身也就是一个字符串(有一些语法规则,特殊符号组成) 正则表达式这个字符串一定要在对应的函数中使用才有意义(分割,替换函数结 ...

  4. Qt 查找功能

    版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处!     导语 这一篇我们来加上查找菜单的功能.因为要涉及Qt Creator的很多实用功 ...

  5. 【Asp.net入门4-02】使用Visual Studio调试器

  6. vue中import xxx from 和 import {xxx} from的区别

    1.import xxx from import FunName from ‘../xxx’ 对应js中的引用: export defualt function FunName() { return ...

  7. 科学计算三维可视化---Mlab基础(管线控制函数)

    科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...

  8. JavaScript setInterval 与 setTimeout 区别

    setInterval:一直循环调用函数,不会停止:需要用 clearInterval 去停止 setTimeout:只调用一次

  9. bat 批量更改文件名

    通过如下批处理命令可实现批量更改文件名: @echo set DIR="%cd%" echo DIR=%DIR% set /p ext=文件类型: set /p find=要替换内 ...

  10. Redis学习三:Redis数据类型

    一.Redis的五大数据类型 1.String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安 ...