题目描述

米尔科买了一套别墅,他想要邀请尽量多的人和他一起庆祝。他需要一张大的木质矩形桌子来让他和他的嘉宾坐下。每张桌子可容纳的人数等于它的周长(四边长度的总和)。米尔科想要买一张即可在他的公寓里放下,也可以坐下尽量多的人和他一起享用晚餐的桌子。桌子必须放置成四条边都与公寓的墙平行的样子。题目给出公寓内部的布局,请问米尔科最多可以邀请多少人吃晚餐。

输入输出格式

输入格式:

第一行包含两个整数R和S(1<=R,S<=400),代表公寓的尺寸(R为宽,S为长),以下的R行中每一行都包含了S个准确的字符(没有空格),代表这个正方形区域是没有东西的('.') ,还是有东西的('X'),米尔科只等把桌子发在没有东西的正方形区域里。

输出格式

输出米尔科在放下他的桌子后能够邀请来吃晚餐的人数

输入输出样例

输入样例#1:

2 2
..
..

输出样例#1:

7

输入样例#2:

4 4
X.XX
X..X
..X.
..XX

输出样例#2:

9

输入样例#3:

3 3
X.X
.X.
X.X

输出样例#3:

3

经过观察得出,这题需要打O(n^2)-O(n^3)的题解,先考虑O(n^3)的解

首先枚举行和列

因为需要找出1-i行可以形成的矩形,所以我们另k从i搜索到1

要成为矩形,每一行的连续空余位置都必须一样,所以sum[ i ] [ j ]表示第i行的第j列又多少个连续的空余位置

如果要每一行的连续空余位置一样并且矩阵周长最大化,那么矩阵的长度就是由目前找过最小的sum来决定

当搜索到X时,就退出,每次找到矩阵都记录一次最大值,故时间保证在O(n^3)以内

我讲的不是很清晰,希望我清晰的代码能够帮助您

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
using namespace std;
const int N=4e2+10;
int n,m;
int sum[N][N];
int maxx=0;
string s;
int read(){//弱智读入 int t;cin>>t;return t;
}
int print(int x){//弱智输出 cout<<x<<endl;
}
int solve(int x,int y){//长和宽分别为x和y的矩阵的周长 return (x+y)<<1;
}
int main(){n=read();m=read();for(int i=1;i<=n;i++){cin>>s;for(int j=0;j<m;j++)if(s[j]=='.')sum[i][j+1]=sum[i][j]+1;//记录前缀和 }int minn;for(int i=1;i<=n;i++)//枚举 for(int j=1;j<=m;j++){minn=999999999;//记录行的最小前缀 for(int k=i;k>=1;k--){minn=min(minn,sum[k][j]);if(!minn)break;//当然不能为0 maxx=max(maxx,solve(i-k+1,minn));//记录最大值 }}print(maxx-1);return 0;
}

洛谷P4417 [COCI2006-2007#2] STOL相关推荐

  1. 洛谷 P2046 BZOJ 2007 海拔(NOI2010)

    题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...

  2. 信息学奥赛一本通 2007:【20CSPJ普及组】方格取数 | 洛谷 P7074

    [题目链接] ybt 2007:[20CSPJ普及组]方格取数 洛谷 P7074 [CSP-J2020] 方格取数 [题目考点] 1. 坐标型动规 [解题思路] 确定状态:a[i][j]为从起点走到i ...

  3. 洛谷 P3620 - P3621 数据备份、风铃、动物园(APIO 2007)

    洛谷 P3620 - P3622 数据备份.风铃.动物园(2007 APIO) P3620 数据备份 题目描述: 思路: 我们先来将这道题简化一下: 将每一对相邻的建筑之间的空地看作一个点,点的权值即 ...

  4. (差分)洛谷P4231 三步必杀

    洛谷P4231 三步必杀 三步必杀 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的 ...

  5. 洛谷P1603,P1597

    第6章 字符串与文件操作 文章目录 第6章 字符串与文件操作 L P1603 斯诺登的密码 何为斯诺登事件? 理解题意 1.输入 2.运算排列 3.排列 因此,可得代码 代码 解释 N P1597 语 ...

  6. (树状数组+逆元)洛谷P5142 区间方差

    洛谷P5142 区间方差 (^ w ^) 题目背景 出题人并没有能力写有趣的题面-- 题目描述 对于一个长度为n的序列a1,a2,a3⋯ana_1,a_2,a_3\cdots a_na1​,a2​,a ...

  7. 洛谷刷题:火星人、奖学金、纪念品分组、统计数字、字符串的展开

    好久没写洛谷了,不优雅的代码又来啦~ [NOIP2004 普及组] 火星人 题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字 ...

  8. 信息学奥赛一本通 1294:Charm Bracelet | OpenJudge NOI 2.6 7113:Charm Bracelet | 洛谷 P2871

    [题目链接] ybt 1294:Charm Bracelet OpenJudge NOI 2.6 7113:Charm Bracelet 洛谷 P2871 [USACO07DEC]Charm Brac ...

  9. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

最新文章

  1. OpenCV 之 Mat 类
  2. c语言中如何自定义sort,c – 如何重载自定义std :: sort比较函数?
  3. 【Python】Python语言学习:pip工具使用知识,模型保存pickle,PDF与docx相互转换处理...
  4. consul 文件夹无法显示_consul集群搭建参考
  5. Invest模型问题答疑--产水模块、土壤保持模块、供需平衡分析、生态系统服务、生物多样性生境质量
  6. 通过在群晖上安装虚拟机,实现群晖与115网盘的双向同步
  7. 查看苹果审核反馈的crash日志/崩溃日志
  8. Unity 物体高亮实现
  9. phpmyadmin mysql_phpmyadmin
  10. 钽电解电容跟铝电解电容的区别
  11. 由“c++链接错误:未定义的引用“引发的思考
  12. 高等数学强化6:二重积分
  13. 在家怎么连接到公司的网络,ssh ,ftp ,3389 ...
  14. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记1:第一章 NumPy快速入门
  15. table表格学习归纳
  16. CSDN创建二级专栏并迁移博客
  17. 围棋布局启蒙(系统学围棋,打实理论基础)
  18. 孕妇各个时期阶段营养食谱(分10个月)
  19. catia草图里写字_在CATIA中写字
  20. 【白板动画制作软件】万彩手影大师教程 | 如何在已有元素中添加新元素对象

热门文章

  1. UIview 添加触摸.手势
  2. 2022-09-12 mysql语法分析实现
  3. 数论(继续补充)(gcd + lcm + qpow + prime+qmul)
  4. 腾创秒会达分布式无线全向麦克风MHD-G3B-13M分体式大功率扬声器
  5. 新一代 IT 服务管理平台 DOSM,助力企业数字化转型
  6. 洲际酒店集团发布全新奢华精选品牌;凯悦27亿美元收购奢华酒店运营集团ALG | 美通社头条...
  7. Linux ps命令简介
  8. 2022安好? 2023何如?
  9. 【新手入门必看】git 和 github 介绍
  10. OGG-01008 Extract displays Discarding bad record (discard recs=1) when using filter or where clause