洛谷P4417 [COCI2006-2007#2] STOL
题目描述
米尔科买了一套别墅,他想要邀请尽量多的人和他一起庆祝。他需要一张大的木质矩形桌子来让他和他的嘉宾坐下。每张桌子可容纳的人数等于它的周长(四边长度的总和)。米尔科想要买一张即可在他的公寓里放下,也可以坐下尽量多的人和他一起享用晚餐的桌子。桌子必须放置成四条边都与公寓的墙平行的样子。题目给出公寓内部的布局,请问米尔科最多可以邀请多少人吃晚餐。
输入输出格式
输入格式:
第一行包含两个整数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相关推荐
- 洛谷 P2046 BZOJ 2007 海拔(NOI2010)
题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...
- 信息学奥赛一本通 2007:【20CSPJ普及组】方格取数 | 洛谷 P7074
[题目链接] ybt 2007:[20CSPJ普及组]方格取数 洛谷 P7074 [CSP-J2020] 方格取数 [题目考点] 1. 坐标型动规 [解题思路] 确定状态:a[i][j]为从起点走到i ...
- 洛谷 P3620 - P3621 数据备份、风铃、动物园(APIO 2007)
洛谷 P3620 - P3622 数据备份.风铃.动物园(2007 APIO) P3620 数据备份 题目描述: 思路: 我们先来将这道题简化一下: 将每一对相邻的建筑之间的空地看作一个点,点的权值即 ...
- (差分)洛谷P4231 三步必杀
洛谷P4231 三步必杀 三步必杀 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的 ...
- 洛谷P1603,P1597
第6章 字符串与文件操作 文章目录 第6章 字符串与文件操作 L P1603 斯诺登的密码 何为斯诺登事件? 理解题意 1.输入 2.运算排列 3.排列 因此,可得代码 代码 解释 N P1597 语 ...
- (树状数组+逆元)洛谷P5142 区间方差
洛谷P5142 区间方差 (^ w ^) 题目背景 出题人并没有能力写有趣的题面-- 题目描述 对于一个长度为n的序列a1,a2,a3⋯ana_1,a_2,a_3\cdots a_na1,a2,a ...
- 洛谷刷题:火星人、奖学金、纪念品分组、统计数字、字符串的展开
好久没写洛谷了,不优雅的代码又来啦~ [NOIP2004 普及组] 火星人 题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字 ...
- 信息学奥赛一本通 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 ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
最新文章
- OpenCV 之 Mat 类
- c语言中如何自定义sort,c – 如何重载自定义std :: sort比较函数?
- 【Python】Python语言学习:pip工具使用知识,模型保存pickle,PDF与docx相互转换处理...
- consul 文件夹无法显示_consul集群搭建参考
- Invest模型问题答疑--产水模块、土壤保持模块、供需平衡分析、生态系统服务、生物多样性生境质量
- 通过在群晖上安装虚拟机,实现群晖与115网盘的双向同步
- 查看苹果审核反馈的crash日志/崩溃日志
- Unity 物体高亮实现
- phpmyadmin mysql_phpmyadmin
- 钽电解电容跟铝电解电容的区别
- 由“c++链接错误:未定义的引用“引发的思考
- 高等数学强化6:二重积分
- 在家怎么连接到公司的网络,ssh ,ftp ,3389 ...
- 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记1:第一章 NumPy快速入门
- table表格学习归纳
- CSDN创建二级专栏并迁移博客
- 围棋布局启蒙(系统学围棋,打实理论基础)
- 孕妇各个时期阶段营养食谱(分10个月)
- catia草图里写字_在CATIA中写字
- 【白板动画制作软件】万彩手影大师教程 | 如何在已有元素中添加新元素对象
热门文章
- UIview 添加触摸.手势
- 2022-09-12 mysql语法分析实现
- 数论(继续补充)(gcd + lcm + qpow + prime+qmul)
- 腾创秒会达分布式无线全向麦克风MHD-G3B-13M分体式大功率扬声器
- 新一代 IT 服务管理平台 DOSM,助力企业数字化转型
- 洲际酒店集团发布全新奢华精选品牌;凯悦27亿美元收购奢华酒店运营集团ALG | 美通社头条...
- Linux ps命令简介
- 2022安好? 2023何如?
- 【新手入门必看】git 和 github 介绍
- OGG-01008 Extract displays Discarding bad record (discard recs=1) when using filter or where clause