\(Des\)

有一个网格图,上面的格子分为空地和障碍,障碍是不可以走的.现在从给定的起点出发开始到处乱走,最多可以往左走\(l\)次,往右走\(r\)次.求可能到达的点数.

\(Sol\)

如果只限制了向左或向右走的次数就要简单一些,所以我们先思考这一种情形.

假设只限制了向左走不能超过\(l\)次.这样转化:对于每个点,它向左走花费的代价是\(1\),其他方向的代价是\(0\).求从给定起点出发,走到每一个点的最小花费.对于某一个点,如果这个花费是\(\leq l\)的,那么这个位置就是可达的.这不就是\(01\)最短路嘛.

现在考虑第二个限制.其实可以发现从起点走到一个特定的点,若向左走的步数一定,那么向右走的步数也是一定的,而且向左走的步数越少,向右走的步数也越少.也就是说,在只考虑一个限制时跑的最短路在考虑两个限制时仍然是最短路.于是就直接按照上面讲的做就好了,统计答案的时候考虑两个限制.

其实,并不需要求出所有的最短路,只要满足限制的点向别的点转移就可以了.

\(Code\)

Code

```cpp
#include
#define il inline
#define Ri register int
#define go(i,a,b) for(Ri i=a;i=b;--i)
#define e(i,u) for(Ri i=b[u];i;i=a[i].nt)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Ri x=0,y=1;char c=getchar();
while(c'9'){if(c=='-')y=-1;c=getchar();}
while(c>='0'&&cq;
int main()
{
n=read(),m=read();rx=read(),ry=read();l=read(),r=read();
go(i,1,n)scanf("%s",(s[i]+1));
q.push_back((nd){rx,ry,0,0});
while(q.size())
{
nd nw=q.front();Ri nx=nw.x,ny=nw.y,nl=nw.l,nr=nw.r;q.pop_front();
if(nl>l || nr>r || vis[nx][ny])continue;
vis[nx][ny]=1;++as;
go(i,0,3)
{
Ri tx=nx+dx[i],ty=ny+dy[i];
if(txn || tym || s[tx][ty]=='*')continue;
nd tw=(nd){tx,ty,nl+(i==1),nr+(i==0)};
if(i==1)q.push_back(tw);
else q.push_front(tw);
}
}
printf("%d\n",as);
return 0;
}

<details>

随机推荐

  1. 获取select文本框的下拉菜单文字内容的两种方式

    <body> <div class="box"> <select id="sel"> <option value=&q ...

  2. win10 uwp httpClient 登陆CSDN

    本文告诉大家如何模拟登陆csdn,这个方法可以用于模拟登陆其他网站. HttpClient 使用 Cookie 我们可以使用下面代码让 HttpClient 使用 Cookie ,有了这个才可以保存登 ...

  3. Example-09-01

    #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> int min(int a, int ...

  4. 洛谷P3150 pb的游戏(1)题解 博弈论入门

    题目链接:https://www.luogu.org/problem/P3150 这道题目是博弈论的入门题. 我们以 必胜态 和 必败态 来讲解这个问题. 首先,下面的图片演示了前8个数的必胜态和必败 ...

  5. IDEA中安装activiti并使用

    1.IDEA中本身不带activiti,需要自己安装下载. 打开IDEA中File列表下的Settings 输入actiBPM,然后点击下面的Search...搜索 点击Install 下载 下载结束 ...

  6. H3C 帧中继与水平分割

  7. Python--day47--内容回顾

    1.什么是数据库

  8. HDU 1568

    - - 我自己开始以为是数值范围是1到100000000.... 搞了半天才发现是斐波那契数列的项数1到100000000 坑爹.!! 不会,只能看网上大牛的题解. 具体解释请看:http://www ...

  9. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional network ...

  10. 1625 - Color Length——[动态规划]

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...