题目大意

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

解题思路

发现,移动所有机器人,其实就相当于移动出口和边界。

于是,设f[i][j][k][l],表示机器人走完了子矩阵(i,j)(k,l),最多可以让多少个机器人走到出口。

每次多加一行或一列转移,根据边界来看增加的机器人数。

详细看程序。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <bitset>
#include <set>
const int maxlongint=2147483647;
const int mo=1e9+7;
const int N=105;
using namespace std;
short f[N][N][N][N],n,m,a[N][N],ans,sx,sy,v[N][N],v1[N][N];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
char c=getchar();
while(c!='.' && c!='o' && c!='E') c=getchar();
v[i][j]=v1[i][j]=a[i][j]=(c=='o');
v[i][j]+=v[i][j-1];
v1[i][j]+=v1[i-1][j];
if(c=='E') sx=i,sy=j;
}
for(short i=sx;i>=1;i--)
for(short j=sy;j>=1;j--)
for(short i1=sx;i1<=n;i1++)
for(short j1=sy;j1<=m;j1++)
{
if(1<i && i1+1<sx+i)
f[i-1][j][i1][j1]=max((int)f[i-1][j][i1][j1],(int)f[i][j][i1][j1]+v[i-1][min((int)j1,m-sy+j)]-v[i-1][max((int)j-1,j1-sy)]);
if(i1<n && sx+i1<n+i)
f[i][j][i1+1][j1]=max((int)f[i][j][i1+1][j1],(int)f[i][j][i1][j1]+v[i1+1][min((int)j1,m-sy+j)]-v[i1+1][max((int)j-1,j1-sy)]);
if(1<j && j1+1<sy+j)
f[i][j-1][i1][j1]=max((int)f[i][j-1][i1][j1],(int)f[i][j][i1][j1]+v1[min((int)i1,n-sx+i)][j-1]-v1[max((int)i-1,i1-sx)][j-1]);
if(j1<m && sy+j1<m+j)
f[i][j][i1][j1+1]=max((int)f[i][j][i1][j1+1],(int)f[i][j][i1][j1]+v1[min((int)i1,n-sx+i)][j1+1]-v1[max((int)i-1,i1-sx)][j1+1]);
}
for(short i=sx;i>=1;i--)
for(short j=sy;j>=1;j--)
for(short i1=sx;i1<=n;i1++)
for(short j1=sy;j1<=m;j1++) ans=max(f[i][j][i1][j1],ans);
cout<<ans<<endl;
}

最新文章

  1. Intellij IDEA 13.1.3 打开多个窗口项目
  2. 禁用DropDownList的Items
  3. Codeforces Round #339 (Div. 2) B. Gena&#39;s Code 水题
  4. bzoj1426
  5. XML编程与应用-读取XML
  6. c语言,内存字节对齐
  7. python中的类机制
  8. codeforces 983A Finite or not?
  9. Perl信号处理
  10. MySQL RPM二进制安装
  11. pyecharts 安装学习
  12. 以计算斐波那契数列为例说说动态规划算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)
  13. centos 7 rpm方式安装mysql
  14. Mac OS X 避免产生临时文件 .DS_Store
  15. 免费api
  16. GPIO引脚操作
  17. Pycharm主题设置以及导入方式
  18. Jmeter 安装后无法启动问题
  19. 使用httpClient调用接口,参数用map封装或者使用JSON参数,并转换返回结果
  20. 我的 Delphi 学习之路 —— Delphi 助手的安装

热门文章

  1. [转帖]PKI技术原理(收集 整理 归纳)
  2. PDO原生分页
  3. Lazy的SDL教程 翻译----Lesson 22 Timing
  4. asp.net练习②——Paginaton无刷新分页
  5. ASP.NET Core MVC里面Razor如何获取URL参数
  6. extjs 表格为可编辑,保存后为不可编辑状态
  7. O060、Restore Volume 操作
  8. O028、nova-compute 部署 instance 详解
  9. input 禁止输入特殊字符
  10. px自动换算rem