首页 > 其他分享 >Lamp

Lamp

时间:2022-11-06 12:44:22浏览次数:19  
标签:空白点 int pos 故障 Lamp 这个 我们



Description

你相信光吗?

你相信光会扩散吗?

现在有一个 H×W 的矩阵,其上有一些障碍物。

现在你要往这个矩阵上任意一个非障碍物的地方放置一个灯,

这个灯能向上下左右四个方向放出光,直到碰到障碍物为止。

问当灯放置在哪个位置上时能使灯照射到的方块最多,并输出这个最大值

1 < = H < = 2,000 1 < = W < = 2,000
Format
Input

见样例
Output

如题
Samples
输入数据 1

4 6
#..#..
.....#
....#.
#.#...

输出数据 1

8

Sol1:
这个题意很简单,如果没什么好的做法,暴力来做
即对于一个空白点,前后左右去扫描,直到遇到故障点或出界。

 

#include<bits/stdc++.h>
using namespace std;
char h[10000][10000];
int main() {
	int n,m,y=0;
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			cin>>h[i][j];
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++) {
			if(h[i][j]!='#') {
				int s=0;
				for(int o=j; o>=1; o--) {
					if(h[i][o]!='.')
						break;
					s++;
				}
				for(int o=j; o<=m; o++) {
					if(h[i][o]!='.')
						break;
					s++;
				}
				for(int o=i; o>=1; o--) {
					if(h[o][j]!='.')
						break;
					s++;
				}
				for(int o=i; o<=n; o++) {
					if(h[o][j]!='.')
						break;
					s++;
				}
				y=max(y,s-3);
			}
		}
	cout<<y;
}

 
细想一下,这样的做法太无趣了,例如对于下面这个数据
#......#
对于夹在两个“#”之间的6个"."它们左右扩展的长度是一样的
并且扩展的长度其实就是等于其左右两个“#”所在列数的差值再-1

于是我们分行分列进行处理即可,原理是一样的。
即:
我们认为每个“." 是夹在两个故障点之间的,为了保证这个一定成立
我们在整个图形的最外面一圈,全打上故障点。
现在我们对某一行的情况来进行处理,形如下图

 

 

 



我们可以记下这一行的每个故障点所在的列数,即
0,3,7,8
可将其放到一个vector或数组中
接下来我们扫描这一行的所有字符,
for(int i=1;i<=m;i++)

当找到一个点为”."时,设其在第J列
此时我们就要知道这个J是夹0,3,7,8这个数列的哪两个数字之间
实现方法有两种
1:使用两分查找,找第一个严格大于J的数字,则这个数字所代表这个空白点右边的故障点
例如当j=1时,我们找到的数字为3,于是这个空白点能拓展的长度就为3-0-1=2
当j=4时,我们找到的数字为7,于是这个空白点能拓展的长度就为7-3-1=3

2:我们设pos=0,代表我们所找到的空白点至少是处于第0个故障点的右边的
如果在执行
for(int i=1;i<=m;i++)时
如果第j列的点是一个空白点,则它就处于第pos+1个故障点与第pos个故障点之间
否则 就执行pos++
大 家可手动模拟一下,上面我说的过程 。明显这种方法是强于第1种的,因为它可以直接确定空白点处于哪个故障点的右边

 

标签:空白点,int,pos,故障,Lamp,这个,我们
From: https://www.cnblogs.com/cutemush/p/16862397.html

相关文章

  • LAMP介绍与基本配置
    一、LAMP概述1、lamp介绍​LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,具体......
  • LAMP概述及配置
    一.LAMP概述1、LAMP的概念LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,......
  • 学习笔记-LAMP
    LAMPLAMP指的Linux(操作系统)、ApacheHTTP服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或Python)的第一个字母,一般用来建立web应用平台Mai......
  • c#Winform自定义控件-信号灯(工业)-HZHControls UCSignalLamp 使用
     想要官网这个效果,自己琢磨了下,记录一下   一、拖一个UCSignalLamp控件   二、设置指示灯的属性//设置指示灯颜色(不闪烁只用写一个......
  • LNMP+LAMP环境搭建
    LNMP+LAMP环境搭建一、LNMP环境1.Linux-介绍操作系统:CentOS7.964位Nginx版本:Nginx1.20.1MySQL版本:MySQL5.7.36(5.5.68-MariaDB)PHP版本:PHP7.0.33......
  • Linux 源码编译安装实现LAMP架构
    1.apache服务编译安装https://www.cnblogs.com/heyongshen/p/16803125.html说明:  编译安装默认不支持fastcgi功能和反向代理功能相关配置:  开启fastcgi功能和反向......
  • clamp()函数
    clamp函数clamp:钳子的意思返回范围内的一个数值。可以使用clamp函数将不断增加、减小或随机变化的数值限制在一系列的值中。floatclamp(floatminnumber,floatma......
  • 11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装
     11.1LAMP架构介绍LAMP是Linux+Apache(httpd)+MySQL+PHP的简称•Linux:操作系统•Apache(httpd):WEB服务器软件,提供WEB服务•MySQL:关系型数据库用于存储数据(字符串)•......
  • 阿里云安装CentOS+LAMP环境
    一.更新CONTOS相关仓库1.安装ius仓库yuminstallhttps://centos7.iuscommunity.org/ius-release.rpm2.仓库相关其他命令查看当前系统的资源仓库yumrepolist搜索某个第......
  • 16、lamp的搭建
    搭建web02服务器作为web01的负载均衡服务器:httpd和nginx配置比较相似,也有虚拟主机,一个http服务需要配置多个站点,基于ip(基本用不到)、端口(内部网站)、域名(外部网站);......