由于上下走不限制,所以按照贪心,我们应该尽可能走上下方向.
我们可以开一个双端队列,并认为每次提取队首的时候得到的是到达该点的最优策略.(这个一定是唯一的,因为不可能向右走几格,然后再退回去. )
那么如果向上下走是不损失的,所以将上下的格子推进队首,优先扩展,然后将左右推进队尾,最后扩展.
这个贪心是正确的,可以保证每一个格子被扩展时都是最优策略.

#include<bits/stdc++.h>
#define maxn 2003
using namespace std;
void setIO(string s) {
string in=s+".in";
freopen(in.c_str(),"r",stdin);
}
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
struct Node {
int x,y;
Node(int y=0,int x=0):x(x),y(y){}
};
deque<Node>Q;
int n,m,r,c,X,Y;
int G[maxn][maxn],vis[maxn][maxn],L[maxn][maxn],R[maxn][maxn];
char str[maxn];
int main() {
int cc=1;
// setIO("input");
scanf("%d%d%d%d%d%d",&n,&m,&r,&c,&X,&Y);
for(int i=1;i<=n;++i) {
scanf("%s",str+1);
for(int j=1;j<=m;++j) G[i][j]=!(str[j]=='.');
}
vis[r][c]=1;
Q.push_back(Node(r, c));
while(!Q.empty()) {
Node u=Q.front(); Q.pop_front();
for(int i=0;i<4;++i) {
int x=u.x+dx[i],y=u.y+dy[i];
if(x<1||x>m||y<1||y>n||vis[y][x]||G[y][x]) continue;
vis[y][x]=1;
L[y][x]=L[u.y][u.x];
R[y][x]=R[u.y][u.x];
if(x<u.x) {
if(L[u.y][u.x] + 1 > X) continue;
else {
L[y][x]=L[u.y][u.x]+1;
Q.push_back(Node(y, x));
++cc;
continue;
}
}
if(x>u.x) {
if(R[u.y][u.x] + 1 > Y) continue;
else {
R[y][x]=R[u.y][u.x]+1;
Q.push_back(Node(y,x));
++cc;
continue;
}
}
Q.push_front(Node(y,x));
++cc;
}
}
printf("%d\n",cc);
return 0;
}

  

最新文章

  1. AndRodi Strudio中的按钮时件
  2. Handler消息传递机制
  3. java之对象转型2
  4. Inside TSQL Querying - Chapter 2. Physical Query Processing
  5. 更改layout的布局
  6. 解决 Oracle em 无法打开的问题
  7. 物理CPU、物理核跟逻辑核的区分
  8. trac的安装和配置
  9. AngularJs练习Demo1
  10. 72_leetcode_Construct Binary Tree from Preorder and Inorder Traversal
  11. 流式数据分析模型kafka+storm
  12. 前段 format方法
  13. Vulkan的分层设计
  14. 六十、linux 编程—— I/O 多路复用 select
  15. Android作业
  16. python基础学习(九)字典
  17. CodeForces Round #529 Div.3
  18. python print 打印的数据包含中文,打印报错UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode bytes in position 459-460: illegal multibyte sequence解决办法
  19. Navicat 连接Oracle11g时出现ORA-12514:TNS:no listener
  20. jQuery跳转到页面指定位置

热门文章

  1. Java合并数组的实现方式
  2. curl基本用法
  3. [转帖]Windows下cwRsyncServer双机连续同步部署
  4. [19/06/04-星期二] HTML基础_实体(转义字符)、图片标签(img)、元标签(meta)、语法规范、内联框架(iframe)、超链接
  5. ModelForm操作
  6. luogu P5340 [TJOI2019]大中锋的游乐场
  7. MFC- 网络编程
  8. js中封装一个自己的简单数学对象
  9. [转]WAREZ无形帝国
  10. 图像描点标注-labelme的安装及使用