可以让出口移动,robots不动
fu,d,l,r f_{u,d,l,r} 表示出口活动的区域为 (x−u,y−l) (x-u,y-l) 到 (x+d,y+r) (x+d,y+r) 这个矩形时最多能救多少机器人。转移的话,画画图可以知道哪些区域求不了

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N=105;int n,m,x,y,L[N][N],R[N][N];
char a[N][N];short f[N][N][N][N],ans;inline void fix(short &x,short y){if(x<y) x=y;
}int main(){freopen("1.in","r",stdin);freopen("1.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%s",a[i]+1);for(int j=1;j<=m;j++){if(a[i][j]=='E') x=i,y=j;L[i][j]=L[i][j-1]+(a[i][j]=='o');R[i][j]=R[i-1][j]+(a[i][j]=='o');}}memset(f,-0x7f,sizeof(f)); f[0][0][0][0]=0;for(int u=0;x-u>0;u++)for(int d=0;x+d<=n;d++)for(int l=0;y-l>0;l++)for(int r=0;y+r<=m;r++){if(f[u][d][l][r]<0) continue;short cur=f[u][d][l][r]; ans=max(ans,cur);if(x-d>u+1 && x-u-1>0)fix(f[u+1][d][l][r],cur+L[x-u-1][min(y+r,m-l)]-L[x-u-1][max(y-l-1,r)]);if(x+u+d<n && x+d+1<=n)fix(f[u][d+1][l][r],cur+L[x+d+1][min(y+r,m-l)]-L[x+d+1][max(y-l-1,r)]);if(y+l+r<m && y+r+1<=m)fix(f[u][d][l][r+1],cur+R[min(x+d,n-u)][y+r+1]-R[max(x-u-1,d)][y+r+1]);if(y-r>l+1 && y-l-1>0)fix(f[u][d][l+1][r],cur+R[min(x+d,n-u)][y-l-1]-R[max(x-u-1,d)][y-l-1]);}printf("%d\n",(int)ans);return 0;
}

[二维区间DP?] Atcoder ARC004E. Salvage Robots相关推荐

  1. ZROI 2021 10联day8 T1 题(期望+二维区间DP)

    你要在一片菜地里捉兔子. 菜地形如一个一个 N×M 的长方形网格,每个顶点要么是空的,要么有一个兔子洞.在每个洞里有恰好 44 只兔子.在土地的四个角都设置了逮兔陷阱(陷阱在坐标 [0,0],[0,M ...

  2. 不止代码:ybtoj-棋盘分割(二维区间dp)

    题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了n-1次后,连同最后剩下的矩形棋盘共有n块矩形棋盘. (每次切割都只能沿着棋 ...

  3. The UVALIVE 7716 二维区间第k小

    The UVALIVE 7716 二维区间第k小 /** 题意:给一个n * n的矩阵,有q个查询每次查询r,c,s,k表示已(r,c)为右上角 大小为s的正方形中 第k小的元素n <= 250 ...

  4. AtCoder AGC004E Salvage Robots (DP)

    题目链接 https://atcoder.jp/contests/agc004/tasks/agc004_e 题解 本题的难度不在于想到大体思路,而在于如何把代码写对.. 首先我们可以不让机器人动,让 ...

  5. 【2021牛客暑期多校训练营5】Double Strings(二维字符串dp)

    D Double Strings 题意: 给出两个字符串A, B, 在其中选出两个等长的子序列(可以不连续)a, b,满足a的字典序严格小于b,求这样的方案有多少个,答案mod(1e9+7) 思路: ...

  6. CF:E. Moving Chips【二维双dp + dp灵活交叉】

    分析 记录*第一次出现的列l和最后出现的列r 然后dp1表示汇聚到当前列的上行的cost dp2表示汇聚到当前列的下行的cost 初始化的话 dp1就是在第L列汇聚到上行的cost,显然如果下行有的话 ...

  7. CKOJ 1066: 地形编辑器(整个区间加减一个数,多次区间操作,处理端点,但这是二维的,骚操作(有dp思想))

    1066: 地形编辑器 时间限制: 1 Sec   内存限制: 128 MB 提交: 32   解决: 4 [ 提交][ 状态][ 讨论版] 题目描述 zdw很喜欢玩红警, 他经常制作一些奇奇怪怪的红 ...

  8. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  9. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★

    P1005 矩阵取数游戏 输入 2 3 1 2 3 3 4 2 输出 82 说明/提示 NOIP 2007 提高第三题. 数据范围: 60%60\%60% 的数据满足:1≤n,m≤301\le n,m ...

最新文章

  1. linux 执行程序 注销,Linux登录登出的过程 | Soo Smart!
  2. R语言与数据分析(12)向量
  3. 高级停靠(Dock)技术的实现
  4. VTK:几何对象之Vertex
  5. [Training Video - 1] [Selenium Basics] [Download and Install Selenium]
  6. 教你在Yii2.0框架中如何创建自定义小部件
  7. api查询所有记录 zabbix_通过Zabbix API获取历史监控数据
  8. Ubuntu 14.04 安装 JDK 8,ubuntu14.04
  9. 用简单Mask分类实现语义分割、实例分割“大一统”!FacebookUIUC开源MaskFormer
  10. 锐捷 重启计算机,关于锐捷客户端重安装后要求反覆重启的解决办法
  11. java编程语言基础
  12. web项目中镶嵌player
  13. 老毛桃PE工具去除捆绑软件的方法
  14. PayPal第一次提现失败手续费返还教程
  15. Golang 内建类型和内建函数 builtin包 注释翻译
  16. Excel将其他单元格的数据合并成一个单元格
  17. 安全多方计算 # 个人笔记
  18. 大学物理电磁学——磁场两条定理
  19. MySQLIntegrityConstraintViolationException: Duplicate entry ‘10xxxx-50xxxx‘ for key ‘xxx‘
  20. Python就业可选方向有哪些?带你了解Python主流职业选择!

热门文章

  1. mysql语言中子查询是什么_SQL查询语句中,什么叫子查询?
  2. COM:根系微生物组研究中的合成群落还原法
  3. python基础——文件与IO
  4. 研华电脑510上电自启_研华工控机BIOS设置通电自启动方法技巧
  5. 初次入坑解析的小程序(决定写代码风格的小程序)
  6. Golang 入门 : 结构体(struct)
  7. 湖南大学计算机通信学院陈果,湖南大学考研研究生导师简介-陈果
  8. python 合并word文件_python读取word合并单元格
  9. 华为笔记本电脑计算机在哪里打开,华为笔记本电脑有摄像头吗
  10. Android格子视图的另外一种实现方式之Images3LinearLayout(9宫格/九宫格)