[agc004d]salvage robot
题意:
别问我谁翻译的
虫合虫莫国的领土我们可以抽象为H*W的笼子,在这虫合土上,有若干个机器人和一个出口,其余都是空地,每次虫合虫莫会要求让所有的机器人向某个方向移动一步,当机器人移动到出口时会被虫合虫莫氵舌扌商出来,当机器人移出笼子时会自木木_火,求最多能取出多少个机器人
$H,W<=100$
题解:
暴力DP;
枚举子矩阵的左上角和右下角,$f[x][y][x_1][y_1]$表示走完$(x,y)~(x_1,y_1)$这个子矩形最多能扌商多少机器人,维护每行每列机器人数的前缀和,暴力转移即可,时间复杂度是$O(n^4)$,但是常数很小。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
short f[][][][];
int h,w,vx,vy,ans=,num[][],pre1[][],pre2[][];
char s[];
int main(){
scanf("%d%d",&h,&w);
for(int i=;i<=h;i++){
scanf("%s",s+);
for(int j=;j<=w;j++){
if(s[j]=='o'){
pre1[i][j]=pre2[i][j]=num[i][j]=;
}else if(s[j]=='E'){
vx=i,vy=j;
}
pre1[i][j]+=pre1[i][j-];
pre2[i][j]+=pre2[i-][j];
}
}
for(int i=vx;i;i--){
for(int j=vy;j;j--){
for(int k=vx;k<=h;k++){
for(int l=vy;l<=w;l++){
if(i>&&i+vx>k+)f[i-][j][k][l]=max((int)f[i-][j][k][l],(int)(f[i][j][k][l]+pre1[i-][min(l,w-vy+j)]-pre1[i-][max(j-,l-vy)]));
if(j>&&j+vy>l+)f[i][j-][k][l]=max((int)f[i][j-][k][l],(int)(f[i][j][k][l]+pre2[min(k,h-vx+i)][j-]-pre2[max(i-,k-vx)][j-]));
if(k<h&&vx+k<h+i)f[i][j][k+][l]=max((int)f[i][j][k+][l],(int)(f[i][j][k][l]+pre1[k+][min(l,w-vy+j)]-pre1[k+][max(j-,l-vy)]));
if(l<w&&vy+l<w+j)f[i][j][k][l+]=max((int)f[i][j][k][l+],(int)(f[i][j][k][l]+pre2[min(k,h-vx+i)][l+]-pre2[max(i-,k-vx)][l+]));
}
}
}
}
for(int i=vx;i;i--){
for(int j=vy;j;j--){
for(int k=vx;k<=h;k++){
for(int l=vy;l<=w;l++){
ans=max(ans,(int)f[i][j][k][l]);
}
}
}
}
printf("%d",ans);
return ;
}
[agc004d]salvage robot的更多相关文章
- NOIp模拟赛二十九
又是受虐的一天呢~接下来四天都要打模拟赛QAQ 今日分数:0(100)+100+0=100 A题O(读入)结论题判断结果时没return 0被subtask卡成0分,喜提fstQAQ,B题DP,C题不 ...
- Robot Framework用户手册 (版本:3.0)
版权信息:诺基亚网络和解决中心 本翻译尊重原协议,仅用于个人学习使用 1.开始: 1.1 介绍: Robot Framework是一个基于Python的,为终端测试和验收驱动开发(ATDD)的可扩展的 ...
- selenium webdriver 右键另存为下载文件(结合robot and autoIt)
首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...
- RIDE -- Robot Framework setup
RobotFramework 是一款基于python 的可以实现关键字驱动和数据驱动并能够生成比较漂亮的测试报告的一款测试框架 这里使用的环境是 python-2.7.10.amd64.msi RID ...
- [8.2] Robot in a Grid
Imagine a robot sitting on the upper left corner of grid with r rows and c columns. The robot can on ...
- Robot Framework自动化测试 ---视频与教程免费分享
当我第一次使用Robot Framework时,我是拒绝的.我跟老大说,我拒绝其实对于习惯了代码的自由,所以讨厌这种“填表格”式的脚本.老大说,Robot Framework使用简单,类库丰富,还可以 ...
- robot创建桌面图标(转载)
桌面ride图标,安装之后会自动创建(偶尔也会创建失败),创建桌面图标方法如下: 1. 新建快捷方式 在桌面右击鼠标,弹出的菜单选择 新建-快捷方式 ,然后在"请键入对象"的位置输 ...
- Robot Framework 的安装和配置(转载)
Robot Framework 的安装和配置 在使用 RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据自己的需求来确定.本文以在有 Python 的环 ...
- 解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题
最新的jenkins打开jenkins robot framework报告会提示如下 Verify that you have JavaScript enabled in your browser. ...
随机推荐
- hdu 1166 敌兵布阵 【线段树】
好好学一下线段树---- 从0开始----加油- 单点更新的 #include<cstdio> #include<cstring> #include<iostream&g ...
- The German Collegiate Programming Contest 2017
B - Building 给一个m各面的多边形柱体,每一侧面有n*n个格子,现在对这些格子染色,看有多少种方式使得多面柱体无论如何旋转都不会与另一个一样. #include <bits/stdc ...
- [HDU1195]Open the Lock
题目大意:给你一个4位数的初始状态(只包含1~9),要求你变化成另一个4位数. 变化规则为:每次可给任意一位加1或减1(1减1变为9,9加1变为1),或交换相邻两个数位上的数字(第一位和最后一位不相邻 ...
- Python发行版本Anaconda的安装说明:基于Anaconda2-4.3.1-Windows-x86_64
Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果 ...
- 鸟哥的linux私房菜
http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php
- ./configure --prefix /?/? 解释
-- ./configure :编译源码 --prefix :把所有资源文件放在 之后的路径之后
- H5知识点
一.总体变化 1.H5文档结构 <!DOCTYPE html> <html> <head> <title> 这是标题 </title> ...
- 玩转iOS开发 - Runloop 具体解释
Runloop 具体解释
- 深入理解Dalvik虚拟机- 解释器的执行机制
Dalvik的指令运行是解释器+JIT的方式,解释器就是虚拟机来对Javac编译出来的字节码,做译码.运行,而不是转化成CPU的指令集.由CPU来做译码,运行.可想而知.解释器的效率是相对较低的,所以 ...
- HDU 5410(2015多校10)-CRB and His Birthday(全然背包)
题目地址:HDU 5410 题意:有M元钱,N种礼物,若第i种礼物买x件的话.会有Ai*x+Bi颗糖果,现给出每种礼物的单位价格.Ai值与Bi值.问最多能拿到多少颗糖果. 思路:全然背包问题. dp[ ...