题目描述

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

输入输出格式

输入格式:

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

输出格式

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

感谢@marcoolmap 提供的翻译

题目描述

Mirko has bought an apartment and wants to invite to dinner as many people as possible to celebrate with him. For this he needs a large rectangular wooden table for which he will sit down with his guests. The number of people a table can accommodate is equal to its perimeter (the sum of the lengths of all four sides). Mirko wants to buy a table such that it fits in his apartment and that as many people as possible can sit down with him for dinner. The table must be placed so that its edges are parallel to the edges of the apartment. Given the layout of the apartment, find the number of people Mirko can invite to dinner.

输入输出格式

输入格式:

The first line contains two integers R and C (1 ≤ R, S ≤ 400), the dimensions of the apartment. Each of the following R rows contains exactly S characters (without spaces), whether a square is free ('.') or blocked ('X'). Mirko can put his table only in free squares.

输出格式:

Output the number of guests Mirko can invite to dinner after he buys his table on a single line.

输入输出样例

输入样例#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

Solution:

  本题前缀和+暴力枚举。

  首先很容易想到一个超级暴力的思路,处理二维前缀和(表示一个矩形的X个数),再n^4枚举矩形的两个顶点,然后判断矩形内的X个数是否为0,更新答案就好了。

  但是数据$n,m\leq 400$,$O(n^4)$肯定炸了。

  优化一下上面的思路,我们处理每行的前缀和$s[i][j]$表示第$i$行到了$j$列的X个数,更改枚举方法,考虑枚举$l,r$表示矩形的长的左右边界,要使周长最大,就得在此基础上最大化宽度,贪心的从第1行开始判断每行的X个数,记录能连续的最大合法长度就是当前的宽,然后更新周长就好了。

  这样时间复杂度$O(n^3)$,稳妥!

代码:

/*Code by 520 -- 9.5*/
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define RE register
#define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++)
#define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--)
using namespace std;
const int N=505;
int n,m,s[N][N],ans;
char mp[N][N];int main(){scanf("%d%d",&n,&m);For(i,1,n) scanf("%s",mp[i]+1);For(i,1,n) For(j,1,m) s[i][j]=s[i][j-1]+(mp[i][j]=='X');For(l,1,m) For(r,l,m) {int ppx=0,lala=0;For(k,1,n)if(s[k][r]-s[k][l-1]==0){if(++ppx>lala) lala=ppx;}else ppx=0;if(lala>0) ans=max(ans,2*lala+2*(r-l+1));}cout<<ans-1;return 0;
}

转载于:https://www.cnblogs.com/five20/p/9595319.html

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

  1. 洛谷P4417 [COCI2006-2007#2] STOL

    题目描述 米尔科买了一套别墅,他想要邀请尽量多的人和他一起庆祝.他需要一张大的木质矩形桌子来让他和他的嘉宾坐下.每张桌子可容纳的人数等于它的周长(四边长度的总和).米尔科想要买一张即可在他的公寓里放下 ...

  2. 将moss 2007的模板文件导入到moss 2010

    最近公司HR请请将一个moss2007的调查模板文件导入到我们部门的Moss protal 上面. 我想这是举手之劳,就爽快的答应了. 但是导入时却报如下错误: Error Microsoft Sha ...

  3. 2007过年休息的日子

    今天值班,2007年上班期间难得的轻闲机会了.借此,为老朋友们更新一下我的近况. 年前四五天就请了年休假,准备享受不用上班的日子.以为能过得轻松惬意,想不到没完没了的家务怎么也做不完,似乎每天都是做饭 ...

  4. Exchange 2007迁移2010时的公用文件夹多个公用树错误

    近期在项目中,客户Exchange 从2007迁移到2010,Microsoft Exchange从2007开始就逐渐弱化了公用文件夹,outlook 2007和2010都不需要使用到公用文件夹了.但 ...

  5. 安装和部署Exchange Server 2007

    为什么Exchange Server 2007使用服务器角色? 简化部署和管理 增强可扩展性 改进安全性   见下图: 什么是邮箱服务器角色? 邮箱服务器角色: 存储用户邮箱和公共文件夹 通过群集, ...

  6. 2007年11月网络工程师考试试题

    ● 若某计算机系统由两个部件串联构成,其中一个部件的失效率为7×10-6/小时.若不考虑其他因素的影响,并要求计算机系统的平均故障间隔时间为105小时,则另一个部件的失效率应为 (1) /小时. (1 ...

  7. SharePoint Server 2007 页面模型

    虽然SharePoint Server 2007使用了ASP.NET 2.0的基础页面模型,SharePoint页面基本上也是基于标准的aspx技术来构建,但SharePoint Server 200 ...

  8. 2007年你必须学习的10项.NET技术

    1.WCF (Windows Communication Foundation):虽然WCF显然没有WPF或SilverLight那么吸引人,但是它却是在.NET框架下解决业务问题的基础.所以你今年至 ...

  9. 【ACM】杭电OJ 2007

    题目链接:杭电OJ 2007 本题容易出错的地方在于:要考虑输入的两个数的大小,一定是小的在前,大的在后 #include "stdio.h" int main () {int a ...

最新文章

  1. java 无视报错编译_java 无视报错编译
  2. dqn在训练过程中loss越来越大_用DQN算法玩FlappyBird
  3. 第十五届智能车竞赛东北赛区普通四轮组冠军车-哈尔滨工业大学-紫丁香
  4. python快速入门答案-Python 快速入门笔记(1):简介
  5. 使用DelayQueue 和 FutureTask 实现java中的缓存
  6. chrome 新的session 设置_为什么还是由这么多人搞不懂Cookie、Session、Token?
  7. [转载] java synchronized静态同步方法与非静态同步方法,同步语句块
  8. 快来!前端君喊你加入快驾网智囊团
  9. 数据结构学习一:概述
  10. 运行python嵌入式要求_在嵌入式IPython实例中运行配置文件启动文件
  11. 将进酒,如果李白也编程
  12. TCP端口扫描[Python3.5]
  13. Android模仿新浪微博(写微博界面)
  14. C语言简单程序编写(一)
  15. Matlab的自相关函数corr
  16. 东南大学女孩子学计算机的多吗,2019年应届南邮上岸东南大学计算机生,经验分享,希望能帮助到迷茫的你...
  17. 脑机接口技术介绍、应用与挑战
  18. Android Studio 自带 模拟器无声音 解决方法
  19. mysql汉字按英文字母排序
  20. Java学习lesson 15

热门文章

  1. 给文档添加签名,介绍用iPhone的实例,安卓手机类似
  2. Wechaty|不使用微信的web协议的机器人
  3. 移动硬盘读不出来的问题
  4. 时之歌 服务器维护,时之歌抽卡卡住了怎么办 时之歌手游招募吞卡解决方法
  5. 液晶显示器汉字字模存储及显示
  6. GPT磁盘如何正确分区以及UEFI引导怎么修复?
  7. C Primer Plus(6) 中文版 第5章 运算符、表达式和语句 5.5 类型转换
  8. 圆圈中间一个乘号:克罗内克积
  9. LVGL8的窗口切换方式
  10. eclips快捷键大全