思路:

题目意思是求平均数>=k的最长序列
先求出a[i]-k的前缀和
就是求sum[i]-sum[j]>=0的最大i-j
当j<=k<=isum[j]<=sum[k]j<=k<=isum[j]<=sum[k]
更新i的时候,k就不如j优
所以处理出来一个单调上升的数组(stak),那答案就在里面选
倒序更新,单调栈一直减减就好
因为如果用stak[top]更新了i,因为i是倒序枚举,递减的,stak又是上升的
所以只有top--才能更新答案

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int n,m,k,a[N],s[N],top,sum[N];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++){
cin>>k;
for(int i=1;i<=n;i++)
sum[i]=sum[i-1]+a[i]-k;
top=1;
s[1]=0;
for(int i=1;i<=n;i++)
if(sum[s[top]]>sum[i])
s[++top]=i;
int ans=0;
for(int i=n;i>=1;i--) {
while(top>1&&sum[i]>=sum[s[top-1]]) top--;
if(sum[s[top]]<=sum[i])
ans=max(ans,i-s[top]);
}
printf("%lld ",ans);
}
return 0;
}

博主原文来自:https://www.cnblogs.com/dsrdsr/p/10428125.html   大佬博主写的让我很明白

#一名爱打篮球的oier#

Blocks—单调栈的更多相关文章

  1. bzoj 2086 [Poi2010]Blocks 单调栈

    [Poi2010]Blocks Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 788  Solved: 356[Submit][Status][Dis ...

  2. bzoj2086: [Poi2010]Blocks DP,单调栈

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2086 思路 这就有点妙了 题目意思就是让你求平均数>=k的最长序列 先求出a[i] ...

  3. poj 3415 Common Substrings(后缀数组+单调栈)

    http://poj.org/problem?id=3415 Common Substrings Time Limit: 5000MS   Memory Limit: 65536K Total Sub ...

  4. POJ3415 Common Substrings —— 后缀数组 + 单调栈 公共子串个数

    题目链接:https://vjudge.net/problem/POJ-3415 Common Substrings Time Limit: 5000MS   Memory Limit: 65536K ...

  5. [bzoj2086][Poi2010]Blocks_单调栈_双指针

    Blocks bzoj-2086 Poi-2010 题目大意:题目链接. 注释:略. 想法:首先,不难发现,如果连续的一段数的平均值不小于输入的k的话,这段数是满足题意的. 所以,我们再次简化一下:将 ...

  6. POJ - 3415 Common Substrings(后缀数组求长度不小于 k 的公共子串的个数+单调栈优化)

    Description A substring of a string T is defined as: T( i, k)= TiTi+1... Ti+k-1, 1≤ i≤ i+k-1≤| T|. G ...

  7. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  8. BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]

    4453: cys就是要拿英魂! Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 90  Solved: 46[Submit][Status][Discu ...

  9. BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2326  Solved: 1054[Submit][Status ...

  10. poj 2559 Largest Rectangle in a Histogram - 单调栈

    Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19782 ...

随机推荐

  1. Python中那些简单又好用的特性和用法

    Python作为我的主力语言帮助我开发了许多DevOps运维自动化系统,这篇文章总结几个我在编写Python代码过程中用到的几个简单又好用的特性和用法,这些特性和用法可以帮助我们更高效地编写Pytho ...

  2. 写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索。这样就能配合wox进行单词的搜索了。

    写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索.这样就能配合wox进行单词的搜索了. // ==UserScript== // @name dict.cn // @namespace ...

  3. linux-debian-把用户加入root组

    使用vim进入 /etc/sudoers   打开这个文件(或者 vi)也行 修改数据: 敲击键盘上个的  i 就可以键入字符了, 在root = ALL(ALL:ALL) ALL  的下面敲击 用户 ...

  4. MinimalApis自动注册

    前言 在Asp.Net Core 6 推出了最小 Api(MinimalApis)来简化WebApi的开发,在前后端分离的趋势下越来越多的后端服务只提供Api接口,但是用Controller的开发模式 ...

  5. "高绩效"指南

    前言 最近被问到一个问题,在工作中,如何拿高绩效.或者换一种表达方式,如何成为老板的"嫡系". 在这里我想简单谈一谈我的想法,可能不准确,各位看官,当饭后茶语罢了. 为了更加有说服 ...

  6. exec函数族使用说明

    exec函数不创建新进程,只用磁盘上的程序替换当前进程的正文段.数据段.堆段和栈段.然后从main函数开始运行. exec函数族使用说明 #include <unistd.h> int e ...

  7. PAT 甲级1008【1008 Elevator】

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  8. WPF设置传参、点击按钮改变长度

    前台代码 <!-- 通过传递ElementName --> <Button x:Name="btn1" Width="200" Height= ...

  9. 工作记录:8个有用的JS技巧

    这里给大家分享我最近学习到的8个有用的js小技巧,废话不多说,我们上代码 1. 确保数组值 使用 grid ,需要重新创建原始数据,并且每行的列长度可能不匹配, 为了确保不匹配行之间的长度相等,可以使 ...

  10. OpenLayers 点击显示经纬度Demo

    这里给大家分享我在OpenLayers 地图开发工作中总结出的一下代码和注意点,希望对大家有所帮助 效果如下: 核心代码展示:附带讲解注释 var map = new ol.Map({ // 初始化地 ...