前言

本题的关键是想到让出口和矩形动,而不是机器人动,只要记录出口的位移矩形,便可以知道哪个区域的机器人已经飞出去了。

题目大意

一个网格图,有若干机器人,还有一个出口。
操作一系列指令让机器人上下左右,走出矩形就死,进入出口则得救。
最多救多少机器人?

DP

不妨认为矩形和出口会动。
我们设f[u,d,l,r]表示出口移动的上下左右,然后转移也很容易。
第一维可以省略,若如此做记得最后再执行往上的转移。

#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=100+10;
int f[maxn][maxn][maxn],sum[maxn][maxn];
int i,j,k,l,r,u,d,t,n,m,ex,ey,ans,up,down,left,right;
char ch;
char get(){char ch=getchar();while (ch!='.'&&ch!='o'&&ch!='E') ch=getchar();return ch;
}
int getsum(int a,int b,int x,int y){return sum[x][y]-sum[a-1][y]-sum[x][b-1]+sum[a-1][b-1];
}
int main(){scanf("%d%d",&n,&m);fo(i,1,n)fo(j,1,m){ch=get();if (ch=='E'){ex=i;ey=j;}else if (ch=='o') sum[i][j]++;}fo(i,1,n)fo(j,1,m)sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];fo(i,0,n)fo(j,0,m)fo(k,0,m)f[i][j][k]=-100000000;f[0][0][0]=0;fo(u,0,n){if (ex-u<1) break;fo(d,0,n){if (ex+d>n) break;up=max(ex-u,1+d);down=min(ex+d,n-u);if (up>down) continue;fo(l,0,m){if (ey-l<1) break;fo(r,0,m){if (ey+r>m) break;left=max(ey-l,1+r);right=min(ey+r,m-l);if (left>right) continue;ans=max(ans,f[d][l][r]);if (u+d<n-ex) f[d+1][l][r]=max(f[d+1][l][r],f[d][l][r]+getsum(ex+d+1,left,ex+d+1,right));if (l+r<ey-1) f[d][l+1][r]=max(f[d][l+1][r],f[d][l][r]+getsum(up,ey-l-1,down,ey-l-1));if (l+r<m-ey) f[d][l][r+1]=max(f[d][l][r+1],f[d][l][r]+getsum(up,ey+r+1,down,ey+r+1));if (u+d<ex-1) f[d][l][r]=max(f[d][l][r],f[d][l][r]+getsum(ex-u-1,left,ex-u-1,right));}}}}printf("%d\n",ans);
}

[agc004e]Salvage Robots相关推荐

  1. AGC004E - Salvage Robots(dp,思维)

    AGC004E - Salvage Robots Solution 怎么又双叒叕遇到和NOIP2020T4NOIP2020T4NOIP2020T4和那道CFCFCF题一样的题了啊,惨痛回忆QAQQAQ ...

  2. AtCoder AGC004E Salvage Robots (DP)

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

  3. [AGC004E] Salvage Robots (DP)

    Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...

  4. agc004E Salvage Robots

    题意: 一个网格图,有若干机器人,还有一个出口. 操作一系列指令让机器人一起上下左右走,走出矩形就死,进入出口则得救. 最多救多少机器人? $W,H \leq 100$ 考虑不让所有机器人移动,而让出 ...

  5. [agc004e]Salvage Robots dp

    Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...

  6. 【AGC004E】Salvage Robots【动态规划dp】

    貌似我的dp和大多数写法不太一样..常数巨大. 我们设 f [ i ] [ j ] [ k ] [ l ] f[i][j][k][l] f[i][j][k][l]为剩下横坐标范围为 i t o j i ...

  7. atcoder【AGC004E】Salvage Robots

    Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...

  8. 【国集作业】【AGC004E】Salvage Robots 【DP】

    小视野链接 洛谷链接 ###题目大意 一个 n ∗ m n*m n∗m的网格上有一些黑点和一个出口.每次操作使所有黑点向上下左右中的任意一个方向移动一格.若移出边界则消失,移至出口则收集起来.问最终收 ...

  9. 【agc004e】Salvage Robots

    题目大意 一个n*m的矩阵,矩阵内有一个出口和若干个机器人,每一步操作可以使所有的机器人向任意方向移动一格,如果机器人出了边界就爆炸.求最多可以让多少个机器人走到出口. 解题思路 发现,移动所有机器人 ...

最新文章

  1. 用思维导图做的求婚计划,哈哈哈
  2. linux目录为root所有文件,linux获取文件所有目录/文件夹的例子linux操作系统 -电脑资料...
  3. 使用Suhosin保护PHP应用系统(禁用eval)
  4. MobileViT 网络测试
  5. 快速理解Docker - 容器级虚拟化解决方案
  6. javaweb登录系统账号密码验证等
  7. 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
  8. Windows下安装Python_思维导图
  9. MiniGUI编程--列表框
  10. 部署到gcp_将S/4部署在“大型公有云”上
  11. 坚定信心,持有002096岭南民爆!
  12. SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
  13. 得具备点靠钱赚钱的能力
  14. GBDT(Gradient Boosting Decision Tree) 没有实现只有原理
  15. 【学习笔记-时间序列预测】prophet-使用.2变化点检测、趋势灵活性调整
  16. 平面设计什么情况下会用到对比构图与调和构图
  17. js的alert弹框中怎么写html,JavaScript实现alert弹框效果
  18. oracle收回dba权限后的检查,Oracle RAC GI 权限 检查和修复 方法
  19. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
  20. 运行wordcount时显示Could not obtain block

热门文章

  1. 读《开放式文本信息抽取》赵军
  2. 书小宅之android——聊天界面的实现
  3. 点云公开数据集:Semantic3D
  4. 比较好用的服务器和网站在线测速工具分享
  5. win10插拔U盘、鼠标、键盘等外设的一瞬间,屏幕会闪黑一下
  6. 保密工作人员计算机方面知识,【保密知识】个人,如何做好保密工作?4个方面...
  7. udp广播 安卓和pc互相收不到消息
  8. 小程序推广的6个超简单方案
  9. 结构体+联合体 详解
  10. 新华社专访流浪地球导演郭帆:中国科幻电影刚刚起步