【单调栈】【前缀和】【二分查找】8.28题解-long
long
题目描述
AP神牛准备给自己盖一座很华丽的宫殿。于是,他看中了一块N*M的矩形空地。空地中每个格子都有自己的海拔高度。AP想让他的宫殿的平均海拔在海平面之上(假设海平面的高度是0,平均数都会算吧?)。而且,AP希望他的宫殿尽量大,能够容纳更多的人来膜拜他。请问AP的宫殿最后会有多大?
输入输出
输入
第一行为N和M。之后N行,每行M个数,描述的空地的海拔。
输出
输出一行,表示宫殿最大面积。
样例
样例输入
3 2
4 0
-10 8
-2 -2
样例输出
4
说明
数据范围
对于30%的数据,N,M≤50;
对于100%的数据,N,M≤200;
思路
- 用前缀和a[i][j]表示第i行1~j列的和
- 开一个单调栈,存海拔之和
- a[k][j]-a[k][q]代表第k行第q列到第j列的海拔高度和
- 当s<0时,设s=p (p<0),在栈中寻找p所对应的f[p],
- 用当前行数k减去f[p],即可得到一段平均海拔在海平面之上的区间。
代码
#include<cstdio>
#include<iostream>
using namespace std;
long long n,m,x,a[201][201],f[201],sta[201],size,ans;
inline long long erfen(long long u) {
long long l=1,r=size,tot=-1;
while(l<=r) {
long long mid=(l+r)>>1;
if(sta[mid]<u) {
r=mid-1;
tot=mid;
} else l=mid+1;
}
return tot;
}
inline int read() {
long long x=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();
return x*w;
}
int main() {
freopen("long.in","r",stdin);
freopen("long.out","w",stdout);
n=read();
m=read();
for(long long i=1; i<=n; i++)
for(long long j=1; j<=m; j++) {
x=read();
a[i][j]=a[i][j-1]+x;
}
for(long long i=1; i<=m; i++)
for(long long j=1; j<=m; j++) {
long long s=0;
sta[0]=1e10;
size=0;
for(long long k=1; k<=n; k++) {
s+=a[k][j]-a[k][i-1];
if(s>0) ans=max(ans,k*(j-i+1));
else {
int z=erfen(s);
if(z!=-1) ans=max(ans,(j-i+1)*(k-f[z]));
}
if(sta[size]>s) sta[++size]=s,f[size]=k;
}
}
printf("%lld\n",ans);
return 0;
}
【单调栈】【前缀和】【二分查找】8.28题解-long的更多相关文章
- 线段树+单调栈+前缀和--2019icpc南昌网络赛I
线段树+单调栈+前缀和--2019icpc南昌网络赛I Alice has a magic array. She suggests that the value of a interval is eq ...
- 单调栈+前缀和 || Nowcoder || 牛客小白月赛13 || 小A的柱状图
题面:小A的柱状图 题解:无 代码: #include<cstdio> #include<cstring> #include<iostream> #define l ...
- [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)
题目传送门(内部题150) 输入格式 第一行两个整数$N,Q$. 接下来的$N$行,每行两个整数$a_i,b_i$. 接下来的$Q$行,每行一个整数$x$. 输出格式 对于每个询问,输出一行一个整数表 ...
- 2019牛客暑期多校训练营(第八场)-A All-one Matrices (单调栈+前缀和)
题目链接:https://ac.nowcoder.com/acm/contest/888/A 题意:给n×m的01矩阵,求出其中全为1的矩阵个数(不被其它全1矩阵包括). 思路:和第二场多校的次大子矩 ...
- [CSP-S模拟测试]:施工(DP+单调栈+前缀和)
题目描述 小$Y$家门前有一条街道,街道上顺序排列着$n$幢建筑,其中左起第$i$幢建筑的高度为$h_i$.小$Y$定义街道的不美观度为所有相邻建筑高度差的绝对值之和乘上常数$c$,为了改善街道环境, ...
- 洛谷 P3246 - [HNOI2016]序列(单调栈+前缀和)
题面传送门 这道题为什么我就没想出来呢/kk 对于每组询问 \([l,r]\),我们首先求出区间 \([l,r]\) 中最小值的位置 \(x\),这个可以用 ST 表实现 \(\mathcal O(n ...
- CF978C Letters【前缀和+二分查找/几房几号】
[链接]:CF978C [分析]:在前缀和数组种二分找到>=询问数的位置,根据位置就好操作了 [代码]: #include<bits/stdc++.h> using namespac ...
- 2019 牛客暑期多校 第八场 A All-one Matrices (单调栈+前缀和)
题目:https://ac.nowcoder.com/acm/contest/888/A 题意:找全1矩阵的个数,并且这个全1矩阵不被其他全1矩阵包含 思路:这里引用付队说的话 -> { 这类问 ...
- 洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找)
洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1333275 这个题不是很 ...
- 【BZOJ4237】稻草人 [分治][单调栈]
稻草人 Time Limit: 40 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description JOI村有一片荒地,上面竖着N个稻草 ...
随机推荐
- Postman(接口自动化测试)
1.Postman 接口测试参数化可能大家都非常的熟悉,但是很多人很难处理参数化后如何断言的问题,特别是当参数中出现中文时,很容易导致在 Runner 页面引入外部文件时导致中文乱码的问题,今天这篇文 ...
- (转)通过gitlab统计git提交的代码量
git的代码量大多数都是根据命令行统计,或者根据第三方插件统计.但是都不满足我的需求,因为我们代码都由gitlab管理,于是想到了通过gitlab暴露出来的接口获取数据. 第一步,生成私钥 登录你的g ...
- SpringBoot简明教程
一.SpringBoot简介 1.什么是SpringBoot SpringBoot用来简化spring应用开发,约定大于配置,去繁从简,是J2EE一站式解决方案 2.SpringBoot的优点 快速创 ...
- makefile的函数集合
strip函数:$(strip text) 函数功能:去除字符串空格函数 示例: STR = a b c LOSTR = $(strip $(STR)) #结果是&quo ...
- CSS中的颜色、长度、角度、时间
一.颜色的表示方法 颜色是通过对红.绿和蓝光的组合来显示的. 1.颜色名 1 <!DOCTYPE html> 2 <html lang="en"> 3 &l ...
- 7.10-11 visudo、sudo
7.10 visudo:编辑 sudoers文件 visudo命令是专门用来编辑/etc/sudoers这个文件的,同时提供语法检查等功能./etc/sudoers文件是sudo命令的配置文件 ...
- JQuery.Gantt开发指南(转)
说明 日前需要用到甘特图,以下转载内容源自网络. • 概述 1.JQuery.Gantt是一个开源的基于JQuery库的用于实现甘特图效果的可扩展功能的JS组件库. •前端页面 o 资源引用 首先我们 ...
- vue项目使用百度地图API获取经纬度
一.首先在百度api注册获得ak密钥 二.进行引入 (1).第一种方式: 直接在vue中index.html中用script标签引入. //你的ak密钥需要替换真实的你的ak码 <script ...
- IDEA 配置 Tomcat(详细)(Day_12)
如果这世界上真有奇迹,那只是努力的另一个名字.生命中最难的阶段,不是没有人懂你,而是你不懂你自己. 运行环境 AND 版本 JDK8 + IntelliJ IDEA 2018.3 + Tomca ...
- 项目实践之工作流引擎基本文档!Activiti工作流框架中流程引擎API和服务详解
流程引擎的API和服务 流程引擎API(ProcessEngine API)是与Activiti打交道的最常用方式 Activiti从ProcessEngine开始.在ProcessEngine中,可 ...