首页 > 其他分享 >7937: 良好的感觉 单调栈

7937: 良好的感觉 单调栈

时间:2023-08-10 21:11:07浏览次数:39  
标签:ch sta 7937 int tot 感受 良好 MAXN 单调

描述

 

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

 

输入

 

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

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

 

输出

 

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

#include <bits/stdc++.h>
#define ll long long
#define MAXN 100007
using namespace std;
struct Point { int id,num; }sta[MAXN]; 
int n,tot; ll ans,sum[MAXN];
int a[MAXN],lef[MAXN],rig[MAXN];
inline int read() {
    int w=0,X=0; char ch=0;
    while (!isdigit(ch)) w|=ch=='-',ch=getchar();
    while (isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
    return w?-X:X; 
}
int main() {
    n=read();
    for (int i=1;i<=n;i++) {
        a[i]=read(),sum[i]=sum[i-1]+a[i];
        while (tot && sta[tot].num>=a[i]) rig[sta[tot--].id]=i;
        lef[i]=tot?sta[tot].id:0;
        sta[++tot]=(Point){i,a[i]};
    }
    for (int i=1;i<=n;i++) {
        if (!rig[i]) rig[i]=n+1;
        ans=max(ans,a[i]*(sum[rig[i]-1]-sum[lef[i]]));
    }
    printf("%lld",ans);
    return 0;
}

 

标签:ch,sta,7937,int,tot,感受,良好,MAXN,单调
From: https://www.cnblogs.com/jyssh/p/17621513.html

相关文章

  • llama2模型部署方案的简单调研-GPU显存占用(2023年7月25日版)
    https://blog.csdn.net/Fatfish7/article/details/131925595先说结论全精度llama27B最低显存要求:28GB全精度llama213B最低显存要求:52GB全精度llama270B最低显存要求:280GB16精度llama27B预测最低显存要求:14GB16精度llama213B预测最低显存要求:26GB16精度llama270B预测最低显......
  • 单调队列
    单调性的原理可以用一句没有啥道理的但又有点道理的话理解:如果一个人比你小还比你强,你就永远打不过他了。最大子序和输入一个长度为\(n\)的整数序列,从中找出一段长度不超过\(m\)的连续子序列,使得子序列中所有数的和最大。注意:子序列的长度至少是\(1\)。转换成前缀和选......
  • 单调栈
    LargestRectangleinaHistogram经典题单调栈:保持栈内元素单调递增因为如果递减后面的元素的高度就会替换前面的元素的高度前面元素等价于多个后面元素当有新元素加入是将原先的递增序列从后往前更新答案最后使得栈保持原有性质这样可以保证每个元素只会被考虑一次,不用......
  • 单调栈算法
    单调栈算法单调栈,就是一个栈,不过栈内元素保证单调性。即,栈内元素要么从小到大,要么从大到小。//单调栈算法#include<bits/stdc++.h>#defineregregisterusingnamespacestd;//读取输入,并返回一个整数inlineintread(){ intx=0,f=1; charch=getchar(); while(ch<'......
  • 多重背包 (单调队列)
    题目链接#include<bits/stdc++.h>usingll=longlong;constintN=1E3+5,M=2E4+5;intn,m;intv[N],w[N],s[N];intf[M];intl,r,q[M];intcalc(inti,intu,intk){ returnf[k*v[i]+u]-k*w[i];}intmain(){ std::ios::sync_with_......
  • dijkstra + 单调栈优化
    打Div.3发现两个最短路板子题一个用的SPFA一个用的邻接矩阵,赶紧补个。#include<iostream>#include<queue>#defineMAXN20010usingnamespacestd;constintinf=2147483647;intn,m,s,t,cnt;intdis[MAXN],h[MAXN],to[MAXN],val[MAXN],nxt[MAXN];boolvis[MAXN]......
  • Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化
    其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2优化能过…CODEO(n3)O(n^3)O(n3)先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2)100分代码(极限数据0.5s0.5s0.5s)#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;......
  • 单调队列
    一个支持在队尾插入,队头和队尾删除的队列,整个队列呈单调性如果要求最大值则维护一个递减的单调队列,最小值则递增用deque写很方便(前几天用数组模拟队列代码调不出bug难受死了)例题 P1886滑动窗口思路:用一个deque,存点的序号(用于判断是否过期)和点的数字。每次新增加一个元素,都......
  • mysql 创建存储过程,查询某学号学生计算机基础课的成绩 ,并输出“优秀”或“良好
    MySQL存储过程简介及示例什么是存储过程?存储过程是一段预编译的SQL代码,可以在数据库中被重复使用。通过存储过程,我们可以将一系列的SQL语句组合在一起,并进行参数的传递和逻辑控制,从而提高数据库的性能和安全性。MySQL存储过程的创建在MySQL中,我们可以使用CREATEPROCEDURE语句......
  • 语音合成技术汇总1:Glow-TTS:通过单调对齐实现文本到语音的生成流
    今天开始开一期语音合成经典论文的翻译Glow-TTS:通过单调对齐实现文本到语音的生成流摘要:最近,文本到语音(Text-to-Speech,TTS)模型,如FastSpeech和ParaNet,被提出以并行方式从文本生成mel频谱图(mel-spectrograms)。尽管并行TTS模型具有优势,但它们不能在没有自回归TTS模型作为外部对齐......