[agc004e]Salvage Robots
前言
本题的关键是想到让出口和矩形动,而不是机器人动,只要记录出口的位移矩形,便可以知道哪个区域的机器人已经飞出去了。
题目大意
一个网格图,有若干机器人,还有一个出口。
操作一系列指令让机器人上下左右,走出矩形就死,进入出口则得救。
最多救多少机器人?
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相关推荐
- AGC004E - Salvage Robots(dp,思维)
AGC004E - Salvage Robots Solution 怎么又双叒叕遇到和NOIP2020T4NOIP2020T4NOIP2020T4和那道CFCFCF题一样的题了啊,惨痛回忆QAQQAQ ...
- AtCoder AGC004E Salvage Robots (DP)
题目链接 https://atcoder.jp/contests/agc004/tasks/agc004_e 题解 本题的难度不在于想到大体思路,而在于如何把代码写对.. 首先我们可以不让机器人动,让 ...
- [AGC004E] Salvage Robots (DP)
Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...
- agc004E Salvage Robots
题意: 一个网格图,有若干机器人,还有一个出口. 操作一系列指令让机器人一起上下左右走,走出矩形就死,进入出口则得救. 最多救多少机器人? $W,H \leq 100$ 考虑不让所有机器人移动,而让出 ...
- [agc004e]Salvage Robots dp
Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...
- 【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 ...
- atcoder【AGC004E】Salvage Robots
Description 蛤蟆国的领土我们可以抽象为H*W的笼子,在这片蛤土上,有若干个机器人和一个出口,其余都是空地,每次蛤蟆会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被蛤蟆活摘出 ...
- 【国集作业】【AGC004E】Salvage Robots 【DP】
小视野链接 洛谷链接 ###题目大意 一个 n ∗ m n*m n∗m的网格上有一些黑点和一个出口.每次操作使所有黑点向上下左右中的任意一个方向移动一格.若移出边界则消失,移至出口则收集起来.问最终收 ...
- 【agc004e】Salvage Robots
题目大意 一个n*m的矩阵,矩阵内有一个出口和若干个机器人,每一步操作可以使所有的机器人向任意方向移动一格,如果机器人出了边界就爆炸.求最多可以让多少个机器人走到出口. 解题思路 发现,移动所有机器人 ...
最新文章
- 用思维导图做的求婚计划,哈哈哈
- linux目录为root所有文件,linux获取文件所有目录/文件夹的例子linux操作系统 -电脑资料...
- 使用Suhosin保护PHP应用系统(禁用eval)
- MobileViT 网络测试
- 快速理解Docker - 容器级虚拟化解决方案
- javaweb登录系统账号密码验证等
- 好文推荐系列--------(3)GruntJS 在线重载 提升生产率至新境界
- Windows下安装Python_思维导图
- MiniGUI编程--列表框
- 部署到gcp_将S/4部署在“大型公有云”上
- 坚定信心,持有002096岭南民爆!
- SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
- 得具备点靠钱赚钱的能力
- GBDT(Gradient Boosting Decision Tree) 没有实现只有原理
- 【学习笔记-时间序列预测】prophet-使用.2变化点检测、趋势灵活性调整
- 平面设计什么情况下会用到对比构图与调和构图
- js的alert弹框中怎么写html,JavaScript实现alert弹框效果
- oracle收回dba权限后的检查,Oracle RAC GI 权限 检查和修复 方法
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
- 运行wordcount时显示Could not obtain block