【洛谷P3135】[USACO16JAN]堡哞Fort Moo

Bessie和她的朋友Elsie正在建筑一个堡垒,与任何一个好的堡垒一样,这个需要一个强固的框架。Bessie想造一个轮廓是1m宽的空心矩形框架,这样堡垒就可以造在框架上了。

Bessie以及选了一个地点建筑堡垒,一片N*M(1<=N,M<=200)的平地。不幸的是,这个地方有一些沼泽地而不可以支撑框架。请帮助Bessie决定最大她可以用堡垒覆盖的区域(即支撑框架的区域),而且避免框架在任何一块沼泽地上。

朴素暴力用前缀和优化成\(n^4\)。

枚举两行,扫一遍m找出最左一列和最右一列,优化为\(n^3\)。

code:

#include <iostream>
#include <cstdio> using namespace std; const int wx=217; inline int read(){
int sum=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();}
return sum*f;
} int ans,n,m; int a[wx][wx],b[wx][wx],c[wx][wx],d[wx][wx]; char cc[wx]; void slove(int first,int second){
int flag=0,fltot=0;
for(int i=1;i<=m;i++){
if(!b[first][i]||!b[second][i])continue;
if(!b[first][i-1]||!b[second][i-1])flag=i;
if(a[second][flag]-a[first][flag]+1!=second-first+1)flag++;
if(a[second][i]-a[first][i]+1==second-first+1){
ans=max(ans,(second-first+1)*(i-flag+1));
}
}
} int main(){
n=read(); m=read();
for(int i=1;i<=n;i++){
scanf("%s",cc+1);
for(int j=1;j<=m;j++){
if(cc[j]=='X')continue;
a[i][j]=a[i-1][j]+1;
b[i][j]=b[i][j-1]+1;
}
}
for(int i=n;i>=1;i--){
for(int j=m;j>=1;j--){
if(!a[i][j])continue;
c[i][j]=c[i+1][j]+1;
d[i][j]=d[i][j+1]+1;
}
}
/*
$n^4暴力$
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!a[i][j])continue;
for(int k=i;k<=n;k++){
for(int l=j;l<=m;l++){
if(!a[k][l])continue;
if(k-i+1<=a[k][l]&&l-j+1<=b[k][l]&&k-i+1<=c[i][j]&&l-j+1<=d[i][j]){
ans=max(ans,(k-i+1)*(l-j+1));
}
}
}
}
}
*/
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
slove(i,j);
}
}
printf("%d\n",ans);
return 0;
}

DP【洛谷P3135】[USACO16JAN]堡哞Fort Moo的更多相关文章

  1. 2018.08.17 洛谷P3135 [USACO16JAN]堡哞(前缀和处理)

    传送门 有趣的前缀和. 数据范围中的n≤200" role="presentation" style="position: relative;"> ...

  2. 树形DP 洛谷P2014 选课

    洛谷P2014 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门 ...

  3. 区间DP 洛谷P2858牛奶零食

    题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...

  4. P1279 字串距离 dp 洛谷

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...

  5. dp 洛谷P1977 出租车拼车 线性dp

    题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...

  6. 经典DP 洛谷p1880 石子合并

    https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新 ...

  7. [DP]洛谷P1115最大子段和

    题目来源 https://www.luogu.org/problemnew/show/P1115 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一 ...

  8. 洛谷 P3133 [USACO16JAN]无线电联系Radio Contact

    P3133 [USACO16JAN]无线电联系Radio Contact 题目描述 Farmer John has lost his favorite cow bell, and Bessie the ...

  9. 尼克的任务 dp 洛谷1280

    蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...

随机推荐

  1. mjpg-streamer在Ubuntu下编译,运行

    1.将USB摄像头插上,查看是否找到设备,输入: wp@ubuntu:/home/$    ls   /dev/video* /dev/video0 2.安装必要的软件集: sudo apt-get ...

  2. 问题:iis配置json;结果:如何配置iis支持.json格式的文件

    如何配置iis支持.json格式的文件 | 浏览:1357 | 更新:2015-04-05 11:00 | 标签:软件 1 2 3 4 5 6 7 分步阅读 现在大家在制作HTM5的一些小场景,小游戏 ...

  3. ffmpeg添加水印的方法举例 (砖)

    网上大部分关于ffmpeg加视频水印的方法还是使用vhook,在现在的ffmpeg中已经不推荐使用,但是也能编译,也能使用,至于效果,一会再说.现在的ffmpeg推荐使用的是libavfilter,但 ...

  4. 【坑】idea+tomcat

    idea用tomcat外置容器部署debug要清掉webapp里面的同名项目,否则就呵呵呵呵了

  5. from xml.etree import cElementTree as ET

  6. 下拉菜单控件JComboBox的使用

    ---------------siwuxie095                             工程名:TestUI 包名:com.siwuxie095.ui 类名:TestList.ja ...

  7. 20行核心代码:jQuery实现省市二级联动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. nginx负载均衡, 配置地址带端口

    nginx.conf  配置如下: upstream wlcf.dev.api { server 127.0.0.1:8833; server 127.0.0.2:8833; } server { l ...

  9. 36-图像有用区(dfs, bfs)

    http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=92 图像有用区域 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   ...

  10. ROS Learning-014 learning_tf(编程) 坐标系变换(tf)广播员 (Python版)

    ROS Indigo learning_tf-01 坐标系变换(tf)广播员 (Python版) 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu ...