土豪聪要请客(题解)
土豪聪要请客
某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客。他在自己在XX星上的别墅里面大摆酒席,想要邀请尽可能多的MZ来参加他的宴会。他将会同MZ一起坐在一个巨大的长方形桌子上。这个桌子能坐下的人数等于他的边长。聪哥要求他的桌子能够放进他的别墅,并且桌子的边必须与别墅的边界平行。给定别墅的平面图,请你求出聪哥最多可以请多少个MZ。
下面n行,每行m个字符,表示一个方块是空的(‘.’)或是被占用了(‘X’)。
聪哥只要他的桌子放在别墅里,并且桌子不能占用任何一个已经占用了的方块。
2 2 .. ..
输出示例1
7
输入示例2
4 5 ..X.. .X... X.... .....
输出示例2
11
上一题是CZY的MZ,这题变成聪哥的了……
先明确一下题意,智商捉急的我看了半天样例才理解:地图中选一个周长最大的只包含字符‘.’的矩形,使矩形周长最大,答案是这个最大的周长-1.
我的思路是这样的:枚举上下边界,于是可以把二维的地图压缩成一维的(只要当前列有障碍物X就压成一个‘X’,没有就压成一个‘.’,如样例2地图中,当前枚举到2~4行,那么压缩后的地图变为“XX...”)。压缩成一维后,问题转化为“在一个只包含字符X和字符.的字符串中,选一个尽量长的只包含字符‘.’的连续子串”,因为是连续的,左右端点构成一个滑动窗口,可以用“尺取法”(个人习惯的叫法,详见代码)解决。
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <stack> #include <vector> #include <queue> #include <cstring> #include <string> #include <map> #include <set> using namespace std;int read() {int x = 0, f = 1; char c = getchar();while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }return x * f; }#define maxn 410 #define INF 1073741823 int n, m, l, r, ans, S[maxn][maxn]; char Map[maxn][maxn]; bool can[maxn];int main() {n = read(); m = read();for(int i = 1; i <= n; i++) scanf("%s", Map[i] + 1);for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++)S[i][j] = S[i-1][j] + (Map[i][j] == 'X');for(int i = 1; i <= n; i++)for(int j = i; j <= n; j++) {memset(can, 0, sizeof(can));for(int k = 1; k <= m; k++) can[k] = !(S[j][k] - S[i-1][k]);l = 1; int tmp = -INF;for(r = 1; r <= m; r++) if(!can[r]) l = r + 1;else tmp = max(tmp, r - l + 1);ans = max(ans, (tmp + j - i + 1 << 1) - 1);}printf("%d\n", ans);return 0; }
转载于:https://www.cnblogs.com/xiao-ju-ruo-xjr/p/4926194.html
土豪聪要请客(题解)相关推荐
- 土豪聪要请客(stol)
土豪聪要请客(stol) 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多-- 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星 ...
- 【19/04/18 膜赛】土豪聪要请客(stol)
题目: 题目描述 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多-- 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星上的别墅 ...
- NOI 2005 聪聪与可可 题解
题目传送门 题目大意: 给出一张无向图,起点终点为 S,TS,TS,T,聪聪站在起点,可可站在终点,可可每回合随机走 111 步,也可能不动,聪聪则会每回合沿最短路向他走两步,每回合聪聪先走,问聪聪期 ...
- cogs 2320. [HZOI 2015]聪聪的世界题解
2320. [HZOI 2015]聪聪的世界 时间限制:6 s 内存限制:512 MB [题目描述] 背景: 聪聪的性取向有问题. 题目描述: 聪聪遇到了一个难题: 给出一个序列a1-an,完成以 ...
- 题解:luogu P2634 [国家集训队]聪聪可可
题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一般情况下石头剪刀布就好了,可是他们已 ...
- BZOJ2152 聪聪可可 点分治题解
Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一般情况下石头剪刀布就好 ...
- 题解报告——聪聪与可可
题目传送门 题目描述 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小老鼠可可.虽 然灰姑娘非常喜欢她们俩,但是,聪聪终究是一只猫,而可可终究是一只老鼠, 同样不变的是,聪聪成天想着要吃掉可可. ...
- [题解]bzoj2152 聪聪可可
Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一般情况下石头剪刀布就好 ...
- 【题解】bzoj-1415 NOI-2005 聪聪与可可
Problem Luogu&bzoj Solution 这题一看就联想起了HNOI游走那道题,仔细一看发现不对 发现这题的转移是有终点的,所以可以用Dp,加上题目是一张图,推荐用记忆化搜索 显 ...
最新文章
- 自从学了这套框架,自动化+性能都解决了
- 阴阳师人数最多的服务器,《阴阳师》手游部分服务器合并公告
- 写让别人能读懂的代码
- c语言制作贪吃小白入门,小白入门——easyx界面版“贪吃蛇”的C语言实现(详细)...
- 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
- angular读取html文件路径,angular中关于路径问题的详解
- SharePoint2010内容类型剖析(三)
- android自定义软键盘
- 基于SpringBoot/SSM的旅游论坛
- python像数常用函数_八卦象数疗法常见配方
- 我的梦想是成为一名计算机程序员英语怎么说,英语作文。我的梦想、我的梦想是成为电脑程序员。。80词...
- IDEA中TODO的使用、配置和设置TODO过滤器
- 太阳能电池基本特性实验报告_太阳能电池基本特性研究实验报告
- 蓝桥杯练习——摔手机测试次数
- 如何为firefox安装视频播放器
- 笔记本计算机风扇声音大怎么办,怎么解决笔记本风扇声音大 笔记本风扇声音大解决办法【图文】...
- spring @Value 的取值顺序 优先级
- 【Lesson 6】 add2和弦
- 利用DSF深度优先搜索来解容器倒水问题
- 简易五子棋游戏(控制台版)
热门文章
- 【python】直方图均衡化和自适应均衡化图像
- tab weui 页面切换_weui tabbar 到底怎么用啊?tab页面为什么不能切换?
- C++输出倒三角加数字
- 多精度数带余除法_《有余数的除法》教学设计
- 知识图谱组队学习Task05——图数据库查询
- EasyBert,基于Pytorch的Bert应用
- 操作系统源代码_计算机自制操作系统(八):仿生DOS操作系统源代码
- 核磁谱图分析步骤_质谱仪、红外光谱、核磁共振氢谱
- mysql学习day03——02
- java 命令行 读取文件_java – 将文件作为命令行参数传递并读取其行