https://www.luogu.com.cn/problem/P2422

题目描述

kkk 做了一个人体感觉分析器。每一天,人都有一个感受值 A_iAi​,A_iAi​ 越大,表示人感觉越舒适。在一段时间 \left[i, j\right][i,j] 内,人的舒适程度定义为 \left[i, j\right][i,j] 中最不舒服的那一天的感受值 \times× \left[i, j\right][i,j]中每一天感受值的和。现在给出 kkk 在连续 NN 天中的感受值,请问,在哪一段时间,kkk 感觉最舒适?

输入格式

第一行为 NN,代表数据记录的天数。

第二行 NN 个整数,代表每一天的感受值。

输出格式

一行,表示在最舒适的一段时间中的感受值。

输入输出样例

输入 #1复制

6
3 1 6 4 5 2

输出 #1复制

60

说明/提示

kkk 最开心的一段时间是第 33 天到第 55 天,开心值:(6+4+5)\times4=60(6+4+5)×4=60。

对于 30\%30% 的数据,1\le N\le 1001≤N≤100。

对于 70\%70% 的数据,1\le N\le 20001≤N≤2000。

对于 100\%100% 的数据,1\le N\le 1000001≤N≤100000,1\le \texttt{感受值}\le 10000001≤感受值≤1000000。


最开始自己的想法是先ST表预处理,然而发现这个l,r是不固定的,这样去做O(n^2)的。然后看到有些大佬 单次枚举求解(二分+区间最小检验) emm当然神仙们的过题办法很多。

这里的想法是转化一下枚举的思路,最小值只有n个,那我们判最小值为n时,以这个n为中心向两边拓展,找到小于n的位置,两边同时找到这样的区间就是最大的和区间。暴力的话选择一个i,再O(n)去扫一遍。O(n^2)

再进行优化就是O(n)单调栈预处理出每个点的左右极限区间

用单调栈求出左边第一个比当前元素i小的元素记作Li​,右边为Ri​,于是我们可以再求一遍前缀和,最后这个元素对应的答案就是:(sum[R[i]-1]-sum[L[i]]) * a[i]

对单调栈的模拟:

样例:3 1 6 4 5 2

{3}

R[1]=2;(以后R[X]=I中X和I都是下标)

{1}

{1,6}

R[3]=4;

{1,4}

{1,4,5}

R[5]=6;

{1,4}

R[4]=6;

{1}

{1,2}

然后发现还有两个点的最右端区间点没有找到,说明这时候栈里面的元素的最右端的节点是n+1;

左端同理;

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
typedef long long LL;
LL n,m;
LL a[maxn];
LL R[maxn];
LL L[maxn];
LL sum[maxn];
LL stack[maxn];
LL top=0;
int main(void)
{LL n;cin>>n;for(LL i=1;i<=n;i++) cin>>a[i];for(LL i=1;i<=n;i++) sum[i]=sum[i-1]+a[i];//top表示在栈中顶头元素是栈中从左往右数的第几个 //栈头在右边 for(LL i=1;i<=n;i++){while(top!=0&&a[stack[top]]>=a[i]) R[stack[top]]=i,top--;stack[++top]=i;}for(LL i=1;i<=top;i++) R[stack[i]]=n+1;top=0;//栈头在左边 for(LL i=n;i>=1;i--){while(top!=0&&a[stack[top]]>=a[i]) L[stack[top]]=i,top--;stack[++top]=i;}for(LL i=1;i<=top;i++) L[stack[i]]=0;LL ans=-0x3f3f3f3f;for(LL i=1;i<=n;i++){ans=max(ans,a[i]*(sum[R[i]-1]-sum[L[i]]));}cout<<ans<<endl;return 0;
}

P2422 良好的感觉相关推荐

  1. 单调队列-原理详解(deque实现)

    一.单调队列的概念: 单调队列,即单调递减或单调递增的队列. 二.单调队列的性质: 1.  队列中的元素在原来的列表中的位置是由前往后的(随着循环顺序入队). 2.  队列中元素的大小是单调递增或递减 ...

  2. 用过美德乐吸奶器的宝妈们感觉比国产吸奶器怎么样啊?

    药效好不好,看疗效就知道.吸奶器好不好看评价就知道.我们来看看美德乐吸奶器 天猫旗舰店 : http://medela.wang  的宝妈们的评价如可 拔奶神器,绝对好过贝亲!最初一次七八十,后来一百 ...

  3. ZBar与ZXing使用后感觉

    [原]ZBar与ZXing使用后感觉(上) 2014-3-18阅读2011 评论1 最近对二维码比较感兴趣,还是那句老话,那么我就对比了一下zxing和zbar 如果对于这两个的背景不了解的话,可以看 ...

  4. k3应付系统初始化应付票据_在家工作时应付无尽干扰的真实感觉

    k3应付系统初始化应付票据 Whether or not you have worked remotely before, you've likely never had to share your ...

  5. 女性程序员大会ghc_在女性科技大会上成为男人的感觉

    女性程序员大会ghc by Elijah Valenciano 通过伊莱贾·瓦伦西亚诺 在女性科技大会上成为男人的感觉 (What It's Like to be a Man at a Women's ...

  6. 被人恨,但感觉不错!

    做销售四年多了,从来没有碰到目前遇到的情况,心中的郁闷,真的没办法排除,干脆写到BLOG上,也算发泄,也算记录! 早两三年,一直在软件和IT服务行业打混,接触的多是企业老总,再有就是集团CIO.简简单 ...

  7. 感觉 Data Access Application Block(DAAB) 里也有可能写得不太好的地方

    昨天下载了博客园的代码,里面有一个 Data\SqlServer.cs 我不清楚是不是 MS DAAB 里的原样文件.不过前面有声明如下: // =========================== ...

  8. 知乎热问:成为算法工程师的路上,掌握什么技术会感觉自我提升突飞猛进?

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:桔了个仔,南洋理工大学,Datawhale成员 这个问题我犹豫了很 ...

  9. 你掌握了什么概念或技术使你感觉自我提升突飞猛进?

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨沈世钧.DLing.坡哥说 来源丨知乎问答 编辑丨极市平台 本 ...

  10. 有一群少年班的好朋友是什么感觉?快快快快快快疯掉了!

    大家好呀,因为阿广最近忙于学习,所以没太多时间更新原创的逗比文章,先给大家说句抱歉.同时最近接了不少的广告软文,我很清楚的知道没有大家的支持,就没有阿广在公众号诉说的平台,由衷的感谢经常看我文章的读者 ...

最新文章

  1. hadoop写文件 java_写文件 - Hadoop 学习手册_教程_Java开发社区
  2. c语言建立线性表(顺序储存,链式储存,循环,双向)全
  3. 北斗云计算机怎么样,北斗定位2.0版服务平台来了
  4. 网易云出现undefined symbol: fribidi_get_par_embedding_levels_ex
  5. exchange 删除邮件
  6. java 网络序_JAVA 网络程序
  7. ASP.NET MVC中通过Request.IsAjaxRequest()来判断是否要加载公共视图
  8. wordpress 更新以及下载插件:wordpress 安装失败:无法创建目录
  9. JVM内存管理------GC算法精解
  10. lamp架构部署 httpd编译、mysql二进制、php编译 网页访问效果
  11. 企业邮箱用户名如何设置修改?企业邮箱域名后缀选择
  12. 腾讯云手游安全MTP怎么样?腾讯云手游安全MTP值得入手吗?
  13. 商业直播平台都有哪些
  14. 不可错过的 7 个JS 小技巧,一定要进来瞧瞧哦
  15. 社保能找公司代缴吗?小心问题找上门
  16. 201310湛湛蓝天下的香山
  17. 卷积神经网络(CNN)在语音识别中的应用
  18. spring如何排除bean的注入
  19. 机器学习技术-层次聚类算法(组平均)-综合层次聚类方法(BIRCH、CURE)
  20. win7开启uasp协议_摆脱低速困扰,ORICO NVME M.2 SSD硬盘盒轻松搞定

热门文章

  1. 基于MATLAB的战术手势识别功能的设计与实现
  2. 20170824关于星光级和低照度你了解多少?
  3. 从Gaussian 09的Hartree-Fock计算的fchk文件转换到Columbus的mocoef文件的脚本
  4. 狂雨小说cms采集规则教程
  5. 【干货】32个EMC标准电路分享!
  6. Java对图片Base64转码--HTML对Base64解码
  7. 交换机设备登录账号权限1_交换机怎么设置 交换机配置方法【详解】
  8. 【PS】免费 使用PS批量将pdf转换成图片 pdf转图片 pdf转jpg pdf转png
  9. 将python随机森林模型保存到文件
  10. 【能量检测】基于认知无线电的能量检测算法的matlab仿真